我为我的项目创建了jar,我遇到了MANIFEST.MF的问题。 我的MANIFEST.MF的结构如下:
------------------------
Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar
----------------------------
当我使用命令运行时:
>>java -jar /usr/local/bin/niidle.jar arguments...
然后它正常工作..... 但我不想要完整的Class-Path名称。
所以当我的MANIFEST.MF的结构如下: 我想让它使用以下Class-Path运行:
---------------------
Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: lib/hector-0.6.0-17.jar
----------------------------
现在当我使用命令运行时:
>>java -jar /usr/local/bin/niidle.jar arguments...
然后显示错误:---
---Exception in thread "main" java.lang.NoClassDefFoundError: me/prettyprint/hector/api/Serializer
at com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)
Caused by: java.lang.ClassNotFoundException: me.prettyprint.hector.api.Serializer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
请告诉我解决方案......
答案 0 :(得分:1)
显然,所需的库不在实际的类路径中。 Here it says:
Class-Path标头中的URL是相对于applet或应用程序的JAR文件的URL给出的。
所以在我的理解中,java现在在这个位置查找hector库:
/usr/local/bin/lib/hector-0.6.0-17.jar
注意,如果使用-jar
选项执行java,则类路径条目取自manefest ,-cp
或$CLASSPATH
中的其他条目被忽略了。