簡體   English   中英

在外部Jar中訪問類

[英]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

一些其他信息:

  1. 當我將ParserUtilities.jar放在.. \\ lib \\ ext目錄中時,一切正常。
  2. 我正在運行Java版本1.6.0_16。 Java(TM)SE運行時環境
  3. 在實驗中,我輸入了java -cp C:\\ Program Files \\ Java \\ jre6 \\ lib \\ ext> java -cp C:\\ Program Files \\ Java \\ externaljars \\ ParserUtilities.jar

並收到此錯誤“找不到主類:Files \\ Java \\ externaljars \\ ParserUtilities.jar”,但沒有主類(它只是我在一系列程序中使用的類的集合)。

我沒有在環境中加載Java SDK,只有Java JRE(這是問題嗎?)。

嘗試在類路徑條目周圍添加“”,因為目錄(程序文件)中有空格。 錯誤消息“ Files \\ Java \\ externaljars \\ ParserUtilities.jar”將表明存在此問題。

Sun的 -jar選項到java命令的文檔 :“使用此選項時,JAR文件是所有用戶類的源,而其他用戶類路徑設置將被忽略。” 我相信這意味着您的CLASSPATH環境變量以及您可能在命令行上提供的任何-cp參數都將被忽略。

因此,您有以下選擇:

  1. 將所有內容打包到一個jar中,然后可以通過運行java -jar JarWithEverything.jar來執行它。
  2. 將內容保存在單獨的jar中,並在命令行上將這兩個jar作為參數提供,以便您鍵入以下內容:

    java -cp "C:\\Program Files\\Java\\externaljars\\ParserUtilities.jar";"C:\\Program Files\\Java\\externaljars\\Parser.jar" com.artificialmed.Initialize

  3. 將內容保存在單獨的jar中,然后將一個或兩個jar放在CLASSPATH環境變量中,而不是在命令行中提供它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM