2011-01-12 29 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中的其他條目將被忽略。