我在以下文件夹usr/local/bin/niidle.jar
中创建了jar,而我的MANIFEST.MF
文件如下:
清单版本:1.0
主类:com.ensarm.niidle.web.scraper.NiidleScrapeManager
类路径:hector-0.6.0-17.jar
我确认文件夹中也存在文件hector-0.6.0-17.jar
:
/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar
我不想在MANIFEST.MF
文件中提供完整的类路径名称,因为我必须在另一台计算机上运行此jar。所以我在MANIFEST.MF文件中只给出了jar文件名Class-Path=hector-0.6.0-17.jar
。
尽管提到了MANIFEST.MF文件中的类路径,但是当我使用命令运行此命令时:
java -jar /usr/local/bin/niidle.jar参数...
它显示错误消息:
-线程“主”中的异常java.lang.NoClassDefFoundError:
我/ prettyprint / hector / api /序列化器
在
com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)
造成原因:java.lang.ClassNotFoundException:
me.prettyprint.hector.api.Serializer
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)
在java.security.AccessController.doPrivileged(本机方法)
在java.net.URLClassLoader.findClass(URLClassLoader.java:188)
在java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)
在java.lang.ClassLoader.loadClass(ClassLoader.java:252)
在java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
...还有1个
请为我提供此错误消息的解决方案。
最佳答案
类路径相对于jar文件所在目录是相对的还是绝对的。
因此对于您的情况,您必须将hector-0.6.0-17.jar更改为/ usr / local / bin