簡體   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