![](/img/trans.png)
[英]Java: why code packaged into a jar file prevent external classes from accessing?
[英]Accessing classes in an external Jar
我在讓Java程序查看打包在外部jar中的類時遇到問題。 我在Windows 7下運行。我將類嵌入在稱為ParserUtilities.jar的jar中。 我使用“系統”實用程序和“環境”選項卡使用CLASSPATH變量建立了路徑。 我確認CLASSPATH設置正確。 當我鍵入echo%CLASSPATH%時,我看到正確的C:\\ Program Files \\ Java \\ externaljars \\ ParserUtilities.jar。 但是,當我鍵入java -jar Parse.jar(我的可執行文件)時,在線程“ main”中收到錯誤Exception。java.lang.NoClassDefFoundError:com / artificialmed / Initialize
一些其他信息:
並收到此錯誤“找不到主類:Files \\ Java \\ externaljars \\ ParserUtilities.jar”,但沒有主類(它只是我在一系列程序中使用的類的集合)。
我沒有在環境中加載Java SDK,只有Java JRE(這是問題嗎?)。
嘗試在類路徑條目周圍添加“”,因為目錄(程序文件)中有空格。 錯誤消息“ Files \\ Java \\ externaljars \\ ParserUtilities.jar”將表明存在此問題。
從Sun的 -jar
選項到java
命令的文檔 :“使用此選項時,JAR文件是所有用戶類的源,而其他用戶類路徑設置將被忽略。” 我相信這意味着您的CLASSPATH
環境變量以及您可能在命令行上提供的任何-cp
參數都將被忽略。
因此,您有以下選擇:
java -jar JarWithEverything.jar
來執行它。 將內容保存在單獨的jar中,並在命令行上將這兩個jar作為參數提供,以便您鍵入以下內容:
java -cp "C:\\Program Files\\Java\\externaljars\\ParserUtilities.jar";"C:\\Program Files\\Java\\externaljars\\Parser.jar" com.artificialmed.Initialize
將內容保存在單獨的jar中,然后將一個或兩個jar放在CLASSPATH
環境變量中,而不是在命令行中提供它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.