如果我創建superjar.jar
並且它需要jar文件stellar.jar
我需要將以下行添加到清單文件superjar.jar Class-Path: path/to/stellar.jar
。但是在我的classpath中我已經有了stellar.jar
。那麼這裏的交易是什麼?爲什麼superjar.jar
不能從我的類路徑中查找stellar.jar
的位置?創建Jar文件,重複類路徑
回答
我需要將下面的行添加到superjar.jar類路徑清單文件:路徑/到/ stellar.jar。
你需要一個路徑在superjar,如果環境變量CLASSPATH被忽略,它被忽略,如果你使用的superjar爲可執行的JAR文件,並與
java -jar superjar.jar
superjar.jar啓動可以訪問類路徑,如果啓動時沒有用不同的專用類路徑覆蓋類路徑,並且沒有運行可執行jar的技術,它總是隻使用該jar中的CLASSPATH,並且始終忽略額外的classpath嘗試。
CLASSPATH=/foo/bar/superjar.jar:/opt/some/stellar.jar
java somepackage.SomeClass
等級路徑是相對的還是絕對的是一個不同的,無關的討論。以上示例使用Unix/Linux-Syntax。在Windows上,您可以使用反斜槓和分隔符「;」。
那麼基本上你說的是,在使用可執行jar文件時,命令行上指定的類路徑總是被忽略?相反,類路徑總是在清單文件的上下文中派生出來的?看來情況就是這樣。在非可執行的上下文中,這是放鬆的,所以我不需要在清單文件中指定依賴關係,只要我使用-classpath開關指定它們即可。 – fthinker 2011-06-03 21:57:02
是的,如果我理解你是對的。你可以 - 即使你有一個可執行的jar - 通過'java -cp /foo/bar/superjar.jar:/opt/some/stellar.jar somepackage.SomeClass'運行(或者運行其中一個)程序。 ,如果你以這種方式添加所有強制類。這可能很有趣,主要是使用更新版本的JDBC驅動程序或更快的XML解析器。 – 2011-06-04 00:03:19
如果CLASSPATH表示一個環境變量,那麼您將要了解Java,所有IDE以及所有Java EE應用服務器都會忽略它。
我沒有在我工作的任何機器上使用CLASSPATH環境變量,因爲它沒用。您需要了解如何正確設置CLASSPATH而不依賴於環境變量。
兩件事情:
- 的路徑stellar.jar相對於superjar.jar
- 如果stellar.jar已經在類路徑,它是在類路徑中,不論什麼superjar.jar的艙單說。
至少在EXECUTING superjar.jar的環境中,從我的測試看來,您需要在裏面放入stellar.jar清單文件。我從清單文件中清除了它,然後運行java -cp /path/to/stellar.jar superjar.jar並失敗。只有當我在清單中包含Class-Path:/path/to/stellar.jar時才起作用。 – fthinker 2011-06-03 21:52:59
這意味着你的運行時類路徑,包括superjar.jar不包括stellar.jar – 2011-06-03 21:53:59
嗯,這就是問題及其原因,因爲stellar.jar不在清單文件中(清單文件Class-path指令明顯規定了類路徑一個可執行的jar文件) – fthinker 2011-06-03 22:04:17
- 1. Netbeans創建的JAR類路徑
- 2. 創建包含類路徑的jar
- 3. 類路徑沒有得到寫入MANIFEST.MF在JAR文件創建
- 4. 設置JAR文件的類路徑
- 5. 包括jar文件到類路徑
- 6. Jar文件類路徑問題
- 7. 將.jar文件添加到類路徑
- 8. jar文件的類路徑問題
- 9. Jar文件的清單類路徑
- 10. 新文件創建路徑
- 11. .jar文件的路徑
- 12. 如何在Gradle中創建路徑jar
- 13. 創建許多jar文件合併可執行的JAR文件(在類路徑中使用)
- 14. 如何檢測類路徑中的重複JAR?
- 15. Jar文件丟失文件路徑
- 16. 創建jar文件
- 17. maven程序集創建jar與依賴和類路徑
- 18. 在jar文件中發現類路徑文件時出錯
- 19. Eclipse Jar構建路徑
- 20. 從.jar文件重新創建項目
- 21. 指定jar的類路徑
- 22. java -jar類路徑問題
- 23. Java Jar - 類路徑問題
- 24. 設置JAR的類路徑
- 25. Java類路徑庫(jar)
- 26. 使用已經建立路徑的jar文件中的類文件
- 27. 如何在給出只有jar文件名的類路徑中獲取jar文件的絕對路徑?
- 28. 源文件夾不是Java構建類路徑,創建Java包
- 29. 在JAR中包含JAR的類路徑
- 30. Eclipse:如何導出在構建路徑中具有.jar文件的.jar文件
'superjar.jar'是一個可運行的jar文件嗎?在這種情況下,它需要在清單中。 – CoolBeans 2011-06-02 18:26:47