2009-01-26 62 views
3

如果我有一個類org.foobar.MyClass,並希望把它放在一個JAR文件,我必須把它放在JAR的/組織/ foobar的/目錄下,或者我可以把它放在/ bin/org/foobar /中,並以某種方式將/ bin /指定爲JAR本身內部的類路徑?指定類路徑類的JAR本身內部

回答

1

每個人都這樣做的通常方式 - 到目前爲止,我從來沒有見過JAR做過不同的事情 - 將類org.foobar.MyClass放入JAR的/ org/foobar /目錄中的JAR文件中。我無法想象有什麼不同之處,因爲這會妨礙正常使用這個JAR的人不做任何不尋常的事情。

0

我相信你可以使用清單文件做到這一點。如果我沒有記錯的話,你可以在jar中指定一個特定文件的位置。

-1

你爲什麼要做後者?根據包名稱將它放在正確的目錄中會更容易,這樣就不必編輯MANIFEST文件或執行其他任何特殊設置。

0

在JAR文件中的名稱必須匹配類的名稱。除非你寫一個自定義類加載器來做怪異的東西。

您可以使用一個jar URL指定jar文件中的「目錄」。但是,我不認爲URLClassLoader正確處理(未嘗試)。

確實存在的標準是通過在清單指定它們添加到classpath中其他JAR文件的功能。

2

您可以在您的清單中的Class-Path屬性,列出的jar文件您的應用程序依賴。路徑將被視爲相對於您的可執行JAR的位置。

例如,如果您的app.jar包含此在MANIFEST.MF:

類路徑:lib1.jar,LIB/lib2.jar

那麼JVM會期望找到lib1.jar在與app.jar相同的目錄以及一個名爲lib的子目錄中包含lib2.jar。