2011-01-12 62 views
3

我为我的项目创建了jar,我遇到了MANIFEST.MF的问题。我的MANIFEST.MF的 结构如下:在jar中的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... 

那么它的正常工作..... 但我不想全部讲座路径名称。

所以,当我的MANIFEST.MF的结构如下: ,我想这一点使用下面的类路径运行:

--------------------- 
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 

请告诉我该解决方案.....

回答

1

显然,所需的库不在实际的类路径中。 Here it says:

The URLs in the Class-Path header are given relative to the URL of the JAR file of the applet or application.

我understandig

所以,现在Java查找赫克托库(只),在这个位置:

/usr/local/bin/lib/hector-0.6.0-17.jar 

请注意,如果您使用-jar选项执行java中,类路径条目取自仅限于-cp$CLASSPATH中的其他条目将被忽略。