【问题标题】:Running external jars using Eclipse Java project in cmd在 cmd 中使用 Eclipse Java 项目运行外部 jars
【发布时间】:2014-01-16 12:23:36
【问题描述】:

我在 Eclipse 中编写了一个项目,我想使用 cmd 运行它的“.class”文件。
我抬头一看,发现我必须使用以下格式:

java -cp 。 package.mainclass

我试过了,它有点工作,问题是我的项目中有一个 lib 目录,其中包含我使用的 jar 文件,当按上述方式运行时,我收到找不到类的错误(除了主要)。
如何运行它?
注意:项目目录中有一个 xml .classpath 文件,其中包含使用的 jar 的名称。

【问题讨论】:

    标签: java eclipse command-line


    【解决方案1】:

    将您的应用程序使用的库添加到类路径中。

    java -cp .;lib/my-lib1.jar;lib/my-lib2.jar my.pkg.MainClass

    如果您还将类打包到 JAR 文件中(推荐),您可以执行以下操作(假设名称为 main.jar,并且位于应用程序的根目录中):

    java -cp main.jar;lib/my-lib1.jar;lib/my-lib2.jar my.pkg.MainClass

    但如果您的应用程序已经有一个 JAR 文件,您将有一个 manifest file,您可以在其中添加类路径:

    类路径:lib/my-lib1.jar;lib/my-lib2.jar

    在这种情况下,您只需开始

    java -cp main.jar my.pkg.MainClass

    最后一步 - 由于您已经有一个带有清单文件的主 JAR,您可以通过将其添加到清单文件中来使其成为可运行的 JAR:

    主类:my.pkg.MainClass

    现在您可以通过以下方式启动您的应用程序:

    java -jar main.jar

    现在也可以双击。

    【讨论】:

    • 好的,谢谢,但我必须使用它工作的库的完整路径
    • 好吧,它工作应用程序正在运行,但我收到错误,属性文件未找到,文件属性位于 Eclipse 项目的主目录中我如何运行应用程序以便它识别文件 i尝试将属性文件复制到与 .class 文件相同的目录中不起作用。
    • 其他问题,其他问题。但是......你不应该在 SO 上问这个问题,因为这个问题之前已经回答了一百次。去搜索吧。
    【解决方案2】:

    您需要将.classpath 中列出的所有罐子手动添加到您的Java 命令中。另一个查找jars 列表的地方是Project->Properties->BuildPath

    您可以使用自定义脚本来生成类路径,例如 (*NIX):

    java -cp $(echo lib/*.jar | tr ' ' ':') package.MainClass
    

    编辑: 好的,那么在*NIX中直接使用Eclipse.classpath文件条目生成classpath,可以使用如下:

    java -cp $(echo $(grep ".jar" .classpath | awk -F \" '{print $4}') | tr ' ' ':') package.MainClass
    

    这样您就不必手动生成类路径。对于 Windows,你需要 bash 脚本来做同样的事情,我还没有解决这个问题!

    【讨论】:

    • 全部手动写?如果有很多怎么办?没有更短的方法吗?
    • 在较短的情况下,您需要编写shell/bash 脚本来生成类路径。这是在给定目录列表的类路径中生成长 jar 列表的常用做法..
    • 首先感谢您的回答,它确实表明您非常关心非常感谢您,但是我仍然有一个小问题,即找不到属性文件,文件属性位于主目录中eclipse项目的我如何运行该应用程序以便它识别我尝试将属性文件复制到与.class文件相同的目录中的文件没有工作。
    • 要将文件夹添加到classpath,您需要使用与jar 相同的方法:java -cp folder-path:MORE-PATH-FOLLOWS。这种方法适用于在类路径中查找属性文件的地方,即ResourceBundle,但是如果您的程序正在使用某些相对路径查找属性文件,那么它就不起作用了,请检查属性文件是如何被加载的..跨度>
    【解决方案3】:

    使用这个我希望这对你有用:

    java -cp <your jar file location> package.mainclass 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2011-09-21
      • 1970-01-01
      相关资源
      最近更新 更多