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

无法通过命令行启动Java应用程序,java,maven,command-line,console,dependencies,Java,Maven,Command Line,Console,Dependencies,所以我在eclipse中有一个maven项目,通常可以通过RunAs>Java应用程序启动。但是,如果我试图通过“JavaTestServer”从命令行的目标目录启动类文件,它将无法工作。它说它无法找到或加载主类。如果我用一个简单的虚拟hello world替换源代码并执行,那么它就可以正常工作 该代码有两个maven依赖项 简单假人: public class HelloWorld { public static void main(String[] args){ S

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

该代码有两个maven依赖项

简单假人:

public class HelloWorld {

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

    }
}

为什么会发生这种情况?nestest类是否存在问题?为什么不能为代码找到一个主类而不是一个小的虚拟类?

问题在于类路径

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

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

看看这里使用Maven

Maven将创建一个库
jar
,其中包含项目的所有类。 您可以设置生成库的类路径,并使用
java

因评论而编辑

下面是一个使用Windows操作系统设置类路径的示例 安慰您也可以将此行放入适当的Windows批处理(.bat)中 归档并启动您的程序

set classpath = .;log4j.jar;lib/any-other-lib.jar
java org.<whatever>.MyProgram
设置类路径=。;log4j.jar;lib/any-other-lib.jar
java org..MyProgram
有关在其他操作系统上设置类路径的更多信息,您还可以查看

无需在此处发布带有代码的版权标题。事实上,从底部的法律链接可以看出:“您同意,您为网络贡献的所有订户内容都永久且不可撤销地获得了知识共享署名共享许可证项下的Stack Exchange许可。”这不是我的版权,我只是在使用库。这有区别吗?嗯。。。对有点1) 您发布的许可证可能与CCA/SA冲突。2) 如果您发布的代码是由其他人编写的,>>youWell它是根据eclipse公共许可证授权的。应该可以吧?还是我侵犯了版权?这是一个简单的示例文件。编辑NVM我刚刚读到,您也需要将所有引用的库添加到类路径中。这就解释了为什么虚拟代码可以工作,而实际代码不能。最简单的方法是打开控制台。切换到目标(bin)目录并调用set classpath=。;;;。。其中点将类路径设置为当前目录,其余设置为相关jar文件。您现在是否导入任何其他库。例如log4j.jar或类似的东西that@Siniyas对的您可以使用分号“;”连接引用的库,而不是在linux或MacOSX上设置类路径的方式。。。我认为这在温多兹身上都是不正确的。首先,环境变量名称区分大小写。