我在Ubuntu 12.04上使用Eclipse 3.7。
我在src
文件夹中的某个Eclipse项目中有五个.java文件。项目文件夹(除bin
,lib
和src
文件夹外),help
文件和properties
文件以及某些输入文件。< / p>
我需要使用java文件创建一个.jar
文件,并使其可以从命令行执行,并将属性文件作为参数。
例如:
java -jar <jar-file-name>.jar -info file.properties
我使用Eclipse将项目作为.jar
文件导出到bin
文件夹中。
我将所有输入文件properties
文件和help
文件复制到dist
文件夹中并运行命令。
我说错误
Failed to load Main-Class manifest attribute from jar
然后我检查了this回答并做了必要的(用一行创建了清单文件)并运行了
jar cfm <jar-file-name>.jar <manifest-file-name> ./bin/*.class
它不起作用,扔了一个ClassNotFoundException
。
任何帮助都将不胜感激。
修改
我在导出.jar时选择了'Next'而不是'Finish'来添加Main类。现在,在执行它时,它为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/
包含所有相关的jar。
它给出了这个错误:
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.
答案 0 :(得分:1)
尝试以下步骤 -
java -cp /path/to/lib/*:yourjar.jar pkg.MainClass -info file.properties
/ path / to / lib / * =所有相关广口的路径。
答案 1 :(得分: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