我已在以下文件夹中创建了 jar 文件:
/usr/local/bin/niidle.jar
我有一个 jar 文件,位于以下文件夹中
/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar
这个文件“hector-0.6.0-17.jar”我必须包含在 jar 中的 MANIFEST.MF 中。
当我在 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
工作正常..
但我不想给出完整的类路径名称,我必须给出类路径,如下所示:
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
请告诉我解决方案...
最佳答案
我至少看到两种解决方案:
- 将 hector-0.6.0-17.jar 存储在 niidle.jar 中,并在 Class-Path 中使用相对路径。例如。
类路径:lib/hector-0.6.0-17.jar
(对于 niidle.jar/lib/hector-0.6.0-17.jar) java -cp/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar/usr/local/bin/niidle.jar
关于java - jar 中的 MANIFEST.MF 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4677342/