0

我在 Ubuntu 12.04 上使用 Eclipse 3.7。

我在文件夹中的某个 Eclipse 项目中有五个 .java 文件src。项目文件夹(除了bin和文件夹)、文件和lib文件以及某些输入文件。srchelpproperties

我需要.jar使用 java 文件创建一个文件,并使其可以从命令行执行,以及作为参数的属性文件。

例如 :

java -jar <jar-file-name>.jar -info file.properties

我使用 Eclipse 将项目作为.jar文件导出到bin文件夹中。

我将所有输入文件、properties文件和help文件复制到dist文件夹中并运行命令。

我有一个错误说

Failed to load Main-Class manifest attribute from jar

然后我检查了这个答案并做了必要的(用一行创建了清单文件)并运行了

jar cfm <jar-file-name>.jar <manifest-file-name> ./bin/*.class

它没有用,并抛出了一个ClassNotFoundException.

任何帮助,将不胜感激。

编辑

我在导出 .jar 时通过选择“下一步”而不是“完成”来添加主类。现在,在执行它时,它为 mysql 连接器 jar 抛出了一个“ClassNotFoundException”。即使它包含在制作 jar 时添加的 lib 文件夹中。

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

第二次编辑

相关输出。

java -cp ./lib/* -jar <non-runnable-jar>.jar -info info.properties

哪里./lib/有所有依赖的罐子。

它给出了这个错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at polygonprobability.Model.readTestingData(Model.java:178)
    at polygonprobability.Model.<init>(Model.java:136)
    at polygonprobability.Info.getModel(Main.java:290)
    at polygonprobability.Main.loadInfo(Main.java:138)
    at polygonprobability.Main.operInfo(Main.java:61)
    at polygonprobability.Main.distribute(Main.java:170)
    at polygonprobability.Main.parse(Main.java:81)
    at polygonprobability.Main.main(Main.java:34)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at polygonprobability.DatabaseConnect.authorizeSQL(DatabaseConnect.java:50)
    at polygonprobability.Model.readTestingData(Model.java:157)
    ... 7 more

为了

java -cp /lib* -jar <non-runnable>.jar <packagename>.Main -info info.properties

它给出了这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: /lib64
Caused by: java.lang.ClassNotFoundException: .lib64
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /lib64. Program will exit.
4

2 回答 2

1

试试这些步骤 -

  1. 导出不包含 Main 类的不可运行的jar (跳过下一部分)
  2. 然后这样做java -cp /path/to/lib/*:yourjar.jar pkg.MainClass -info file.properties

/path/to/lib/* = 所有依赖 jar 的路径。

于 2013-08-01T10:16:52.143 回答
0

运行 jar 的命令行应该是

java -jar myJar.jar your.package.ClasswithMainMethod

如果提供了错误,请包括它们。

我相信你可能特别想要

java -jar myJar.jar your.package.ClasswithMainMethod args

我发现运行该程序的最佳方法是从你的项目文件中的 dist 文件夹上方一步,这样你就可以实际运行

java -jar ./dist/myJar.jar your.package.ClasswithMainMethod args 

这样当你重建 Eclipse 时不会抱怨它不能删除 dist 文件夹

最后,如果您出于某种原因移动了 lib 路径,请尝试以下操作

java -cp /path/to/lib/*:myJar.jar your.package.ClasswithMainMethod args
于 2013-08-01T10:09:38.390 回答