我在以下文件夹usr/local/bin/niidle.jar
中创建了jar,我的MANIFEST.MF
文件如下:
Manifest-Version: 1.0 Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager Class-Path: 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文件中提到了Class-Path,但当我使用命令运行它时:
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 :(得分:2)
Class-Path对于jar文件所在的目录是相对的或绝对的。 所以对于你的情况你需要hector-0.6.0-17.jar到/ usr / local / bin