2011-01-12 19 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は今、この場所で(のみ)ヘクターライブラリを探します:あなたは-jarオプションでJavaを実行した場合、その

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

注意を、クラスパスのエントリは、のみから取得され、-cpまたは$CLASSPATHの追加エントリは無視されます。

関連する問題