java - 无法通过命令行启动 Java 应用程序

标签 java maven command-line console dependencies

所以我在 Eclipse 中有一个 Maven 项目,我通常可以通过运行为 > Java 应用程序启动它。但是,如果我尝试通过“java TestServer”从命令行从目标目录启动类文件,它将无法工作。它说它无法找到或加载主类。如果我用一个简单的虚拟 hello world 替换源代码并执行,那么它就可以正常工作。

该代码有两个 Maven 依赖项。

简单的虚拟:

public class HelloWorld {

    public static void main(String[] args){
        System.out.println("hello world!");

    }
}

为什么会发生这种情况?嵌套类有问题吗?为什么找不到代码的主类,而是找到一个小虚拟类?

最佳答案

问题出在类路径上。

Maven 不负责从 Eclipse 工作区运行项目 因为 Eclipse 拥有自己的 .project文件,其中包含所有类路径条目。当您使用Run As时,Eclipse只使用其.project的所有类路径配置文件。

要从控制台启动java程序,您需要将类路径设置为bintarget目录以及项目引用的所有库(“jar”)。正确设置类路径后,您可以使用 java <qualified classname> 启动程序。以这种方式启动程序根本没有使用 Maven 的任何功能。

看看这里使用Maven https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Maven 将创建一个库 jar其中包含项目的所有类。 您可以将类路径设置为生成的库并使用java <qualified classname>启动您的程序

根据评论进行编辑

这是使用 Windows 操作系统设置类路径的示例 安慰。您也可以将此行放入适当的 Windows 批处理 (.bat) 文件并启动您的程序,

set classpath = .;log4j.jar;lib/any-other-lib.jar
java org.<whatever>.MyProgram

有关在其他操作系统上设置类路径的更多信息,您还可以查看 setting Java Classpath in linux?

关于java - 无法通过命令行启动 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083340/

相关文章:

shell - Docker:在容器中运行的spigot控制台上执行命令

java - GWT 2.4 - 在 Web 服务器上部署

java - spring事务管理器可以管理2个事务吗?

java - boolean 值如何排序?

java - 如何在 Java 中的另一个类中使用一个类的变量?

android - Proguard 与 AbstractModule

maven - 从 Maven 站点中删除关于链接

java - 使用 maven 发布多个长期存在的分支

linux - Bash脚本根据名称将所有文件从当前目录传输到特定目录

php - 如何在 PHP shell_exec 中设置命令行环境变量