2011-01-13 55 views
0

我創建了我的jar文件在以下文件夾:問題MANIFEST.MF在JAR

/usr/local/bin/niidle.jar 

而且我有一個jar文件是在以下文件夾

/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar 

而這個文件'hector-0.6.0-17.jar'我必須包含在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 

它可以正常工作..

但我不想要給出完整的Class-Path名稱,我必須給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 

它顯示錯誤消息:

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

可能重複的[與JAR文件內設置在MANIFEST.MF類路徑問題](HTTP:/ /stackoverflow.com/questions/4667281/problem-with-setting-the-class-path-in-manifest-mf-within-jar-file) – 2011-01-13 10:49:27

回答

0

創建lib文件夾在您運行命令的文件夾中,將hector-0.6.0-17.jar並嘗試再次運行該命令。

1

我看到至少有兩種解決方案:內niidle.jar

  1. 店赫克託 - 0.6.0-17.jar和使用類路徑的相對路徑。例如。 Class-Path: lib/hector-0.6.0-17.jar(對於niidle.jar/LIB /赫-0.6.0-17.jar)的
  2. java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar /usr/local/bin/niidle.jar