首页 文章

在jar文件中的manifest.mf中设置类路径的问题

提问于
浏览
-1

我创建了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 回答

  • 2

    您必须在清单文件中编写相对类路径 . 例如,如果您的应用程序具有包含所有第三方jar的lib目录,则只需将以下行添加到清单文件中:

    Class-Path: lib/hector-0.6.0-17.jar

    现在这个 java -jar bin/niidle.jar arguments... 如果你从 /usr/local/ 运行它应该工作

    我建议你将所有jar文件放在一个目录中,例如库 . 它更容易维护 . Bin目录应包含脚本 .

相关问题