喜 我在这个文件夹中创建了一个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
问题是什么,请告诉我这个例外的解决方案......
答案 0 :(得分:1)
真的应该有效!请仔细检查,两个 jar文件(niidle.jar
和hector-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加载器汇总了问题和解决方案