2017-10-05 124 views
0

如果存在清單的Class-Path條目,該條目不在該位置存在,但可以通過其他方式(位於應用程序服務器的lib文件夾中示例)未使用的MANIFEST.MF類路徑

未解析的Class-Path條目是否會導致任何錯誤?

回答

1

JVM負荷&搜索按照以下順序類:

  1. 自舉類 - 這包括Java平臺,包括在rt.jar中和其他一些重要的jar文件中的類類。
  2. 擴展類 - 使用Java擴展機制的類。它們被捆綁爲擴展目錄中的.jar文件,通常是$ JAVA_HOME/lib/ext目錄。
  3. 用戶類別 - 開發人員定義的類。在命令行上使用-classpath選項或通過使用CLASSPATH環境變量來定位這些類。

如果(例如,擴展,或先前在類路徑中列出的JAR文件),那麼該JAR文件將不被搜索的是已經包含在JAR-類路徑指向一個JAR文件再次。 (此優化提高了效率並防止了循環搜索。)在類路徑的早期出現的位置搜索此類JAR文件。

爲了驗證這一點,我還做了以下測試 1.創建了包含Util類的lib(jar)「classpath-test」。 2.創建另一個lib(jar),即使用classpath-test的Util類的wrapper-lib。 3.在wrapper-lib的MANIFEST.MF中,在條目下方添加。

Class-Path: lib/classpath-test.jar 
  • 複製下lib目錄類路徑-Test.jar的跑以下命令

    Java的罐子包裝-lib.jar

  • 以上命令很好。在刪除lib/classpath-test.jar後執行相同的命令,失敗。

    從JAVA_HOME/lib/ext目錄複製LIB &
  • 另一個測試,刪除類路徑-Test.jar的跑

    Java的罐子包裝-lib.jar

  • 它工作。