【问题标题】:Jar file won't execute, not sure if I'm creating it correctlyJar 文件不会执行,不确定我是否正确创建它
【发布时间】:2014-04-06 07:25:05
【问题描述】:

我正在尝试用两个类制作一个 jar 文件,其中一个依赖于一个外部 jar。我有一个包含 manifest.txt 的目录、一个包含外部 jar RXTXcomm.jar 的 lib 文件夹,以及一个名为 Arduino 的文件夹,其中包含我的两个类 SendValue.java 和 SerialClass.java。

首先我正在编译我的类:

javac arduino\*.java

这将创建 3 个新文件,SerialClass$1.class、SerialClass.class 和 SendValue.class。为了制作 jar 文件,我正在运行:

jar -cfm send.jar manifest.txt arduino\*.class lib\rxtxcomm.jar

这很好用。然后我尝试使用以下命令运行该文件:

java send.jar

我得到错误:

Could not find or load main class send.jar

我也试过用下面的命令运行它,得到了同样的错误:

java -cp . send.jar

manifest.txt 中唯一的一行是:

Main-Class: Arduino.SendValue

我的类在 Eclipse 中运行良好,所以我假设它们不是问题。 SendValue.java 有一行:

public static void main(String[] ag) {

应该是这样的。

有什么想法吗?

【问题讨论】:

    标签: java windows jar


    【解决方案1】:

    您想使用以下方式运行 jar

    java -jar send.jar
    

    此外,除非您想使用 OneJar 之类的工具对嵌套 jar 进行一些魔术,否则您应该从您的 jar 命令中删除 lib\rxtxcomm.jar,并将以下行添加到您的清单中。

    Class-Path: lib\rxtxcomm.jar .
    

    【讨论】:

    • 以这种方式运行会引发另一个错误:在 send.jar 中没有主要清单属性。我尝试按照您建议的方式制作 jar 文件,但即使使用 -jar 选项运行它也会出现与我最初遇到的相同的错误。
    • 我刚刚意识到我错过了该行末尾的句号。现在可以了。谢谢!
    【解决方案2】:

    如果您要使用命令行或终端来运行单个 java 可执行文件,请使用

    java -jar send.jar
    

    此外,如果您使用 Netbeans、IntelliJ IDEA 或 Eclipse 等 IDE 进行编译和测试会更好,因为它们旨在执行此类操作,并且在执行步骤时更可靠,不像人脑。

    【讨论】:

    • 谢谢,但这会引发错误:在 send.jar 中没有主要清单属性。我尝试通过 Eclipse 进行编译,但尝试以这种方式运行它时遇到了同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多