所以我在 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程序,您需要将类路径设置为bin
或target
目录以及项目引用的所有库(“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/