繁体   English   中英

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

[英]problem with setting the class path in manifest.mf within jar file

我已经创建了jar文件,并使用以下命令运行它:

java -jar /usr/local/bin/niidle.jar参数...

然后我得到了这个错误----线程“ main”中的异常java.lang.NoClassDefFoundError:com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21:me / prettyprint / hector / api / Serializer )原因:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)处的me.prettyprint.hector.api.Serializer(java.java.security.AccessController.doPrivileged(Native Method)处)。 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)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参数...

它的工作正常。

但是我只想在MANIFEST.MF的Class-Path中提到jar文件名“ hector-0.6.0-17.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参数...它向我显示了相同的错误消息:-

-线程“主”中的异常java.lang.NoClassDefFoundError:com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21)的me / prettyprint / hector / api / Serializer导致原因: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(本机方法) .java:188),位于java.lang.ClassLoader.loadClass(ClassLoader.java:307),位于sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301),位于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的lib目录,只需将以下行添加到清单文件中:

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

现在,如果从/usr/local/运行它,此java -jar bin/niidle.jar arguments...应该可以工作

我建议您将所有jar文件放在一个目录中,例如lib。 易于维护。 Bin目录应包含脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM