MANIFEST.MF问题

时间:2011-01-14 06:25:17

标签: java

喜    我在这个文件夹中创建了一个jar:eclipse中的'/usr/local/bin/niidle.jar'。    我在/usr/local/bin/niidle.jar中有另一个jar。    在我的niidle.jar文件中,有一个'lib'文件夹,在'lib'中    文件夹,还有另一个jar文件'hector-0.6.0-17.jar'。    我在MANIFEST.MF中添加了这个'hector-0.6.0-17.jar'文件,如下所示:


Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: 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

问题是什么,请告诉我这个例外的解决方案......

2 个答案:

答案 0 :(得分:1)

真的应该有效!请仔细检查,两个 jar文件(niidle.jarhector-0.6.0-17.jar是否位于相同文件夹中。关注the example on the official Java tutorial,确实应该工作:

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

否则,再次检查,如果hector jar与eclipse中使用的是相同的那个。您可能有不同版本的jar用于编译和执行,这可能会导致同样的问题。也许缺少的类不在hector lib中。


添加 - 如果您使用文本编辑器编写了清单文件,确保,则最后一行是空行!如果Class-Path属性行是最后一行,并且它不以CR或LF结尾,那么它将不会被解析 - 并且hector jar不会被添加到类路径中。

答案 1 :(得分:0)

从页面链接的

http://www.jdotsoft.com/JarClassLoader.php和其他jar加载器汇总了问题和解决方案