【问题标题】:Can not start Java application via commandline无法通过命令行启动 Java 应用程序
【发布时间】:2015-09-14 00:10:42
【问题描述】:

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

代码有两个maven依赖。

简单的假人:

public class HelloWorld {

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

    }
}

为什么会这样?由于嵌套类有问题吗?为什么找不到代码的主类,只能找到一个小假人?

【问题讨论】:

  • 无需在此处使用您的代码发布版权标头。
  • 确实,来自底部的法律链接:“您同意,您向网络贡献的所有订阅者内容均根据知识共享署名相同方式共享许可永久且不可撤销地授权给 Stack Exchange . "
  • 这不是我的版权,我只是使用图书馆。这有什么不同吗?
  • 嗯......是的......有点。 1) 您发布的许可证可能与 CCA/SA 冲突。 2) 如果您发布其他人编写的代码,>>您
  • 嗯,它是在 eclipse 公共许可证下获得许可的。那应该没问题吧?还是我侵犯了版权?这是一个简单的示例文件。

标签: java maven command-line console dependencies


【解决方案1】:

问题在于类路径。

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?

【讨论】:

  • 编辑 NVM 我刚刚读到您还需要将所有引用的库添加到类路径中。这就解释了为什么虚拟代码有效而实际代码无效。
  • 最简单的方法是打开一个控制台。切换到目标(bin)目录并调用 set classpath = .;;;.. 点将类路径设置为当前目录,其余设置为关联的 jar 文件。跨度>
  • 您现在是否导入任何其他库。例如 log4j.jar 或类似的东西
  • @Siniyas 正确。您可以使用分号“;”连接引用的库
  • 这不是你在 linux 或 MacOSX 上设置类路径的方式......而且我认为它在 windows 上甚至都不正确。首先,环境变量名称区分大小写。
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 2021-06-03
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2012-02-03
  • 2014-07-27
相关资源
最近更新 更多