我创建了jar文件,然后使用命令运行它: -
java -jar /usr/local/bin/niidle.jar参数...
然后我收到了这个错误----线程“main”中的异常java.lang.NoClassDefFoundError:com /ensarm.niidle.web.scraper.NiidleScrapeManager.main中的me / prettyprint / hector / api / Serializer(NiidleScrapeManager.java:21 )引起:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)中的java.security.AccessController.doPrivileged(本地方法)java.上的me.prettyprint.hector.api.Serializer . 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个
我在MANIFEST.MF中提到了完整的类路径名,Class-Path = / Projects / EnwelibDatedOct13 / Niidle / 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 arguments ...它正常工作 .
但我想在MANIFEST.MF中的Class-Path中仅提及jar文件名“hector-0.6.0-17.jar” . 如果我提供完整的类路径,那么它将无法在其他机器上工作 . 我必须运行其他机器上的这个 jar . 当我只提到jar文件名“hector-0.6.0-17.jar”时,我用命令运行它: -
java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -jar /usr/local/bin/niidle.jar arguments ...它显示了同样的错误信息: -
- 线程“main”中的异常java.lang.NoClassDefFoundError:com /ensarm.niidle.web.scraper.NiidleScrapeManager.main中的me / prettyprint / hector / api / Serializer(NiidleScrapeManager.java:21)引起:java.lang .ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)中的me.prettyprint.hector.api.Serializer,位于java.net.URLClassLoader.findClass(URLClassLoader)的java.security.AccessController.doPrivileged(Native Method) .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个
我不想在MANIFEST.MF中提到完整的类路径名,所以请告诉我这方面的解决方案,或者如何在MANIFEST.MF中将jar文件名“hector-0.6.0-17.jar”设置为Class-Path jar .
1 回答
您必须在清单文件中编写相对类路径 . 例如,如果您的应用程序具有包含所有第三方jar的lib目录,则只需将以下行添加到清单文件中:
Class-Path: lib/hector-0.6.0-17.jar
现在这个
java -jar bin/niidle.jar arguments...
如果你从/usr/local/
运行它应该工作我建议你将所有jar文件放在一个目录中,例如库 . 它更容易维护 . Bin目录应包含脚本 .