2017-06-06 119 views
2

我正在研究一個由Eclipse自制視圖組成的插件。 當我運行該插件,並顯示使用System.getProperty("java.class.path") classpath中我得到這個作爲輸出:D:\Programs\eclipse\plugins\org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar操縱Eclipse插件的java類路徑?

我想補充一些.jar文件我的看法的正常運作,但我無法弄清楚如何。 ..我想你可以通過向插件的MANIFEST.MF添加一些規範來做到這一點,但我不知道如何做到這一點。 有什麼想法?

回答

1

每個Eclipse插件都有自己的類路徑。要在插件中使用額外的jar,您需要將它們包含在插件中。

將你的罐子添加到插件目錄。通常他們被放在'lib'目錄中。

打開插件MANIFEST.MF編輯器並在'Classpath'部分的'Runtime'選項卡上單擊'Add ...'按鈕並將您的jar添加到類路徑中。

在編輯器的'Build'選項卡上確保'lib'文件夾包含在Binary Build部分中。

您的MANIFEST。MF應該結束了一個`捆類路徑」條目,看起來像:

Bundle-ClassPath: ., 
lib/jogg-0.0.7.jar, 
lib/jorbis-0.0.15.jar, 
lib/vorbisspi1.0.2.jar 

(在這裏我有一個lib文件夾3瓶)。

build.properties文件應該是這樣的:

bin.includes = META-INF/,\ 
       .,\ 
       plugin.xml,\ 
       lib/,\ 
       lib/jogg-0.0.7.jar,\ 
       lib/jorbis-0.0.15.jar,\ 
       lib/vorbisspi1.0.2.jar 
+0

這是關於有其自己的類路徑的每個插件的一個很好的註釋。 – KevinO

+0

明白了謝謝你,這樣我有我的.jar文件以及添加後: '捆CLASSPATH中的lib /阿爾基-JAR-4.77.100.jar, 的lib/daogeneration_rev1.jar, 的src /' 我build.properties也可以,但是當我使用'System.getProperty(「java.class.path」)測試它時''我得到和以前一樣的輸出:'D:\ Programs \ eclipse \ plugins \ org.eclipse.equinox .launcher_1.3.100.v20150511-1540.jar' 這可能是我的測試中的一個問題..我會環顧四周。 –

+0

'System.getProperty(「java.class.path」)'不適用於Eclipse插件。每個插件都有一個由Eclipse OSGi代碼管理的單獨的類路徑,它不設置該屬性。 –

0

我發現的最佳方法是在您的Eclipse項目(包含您的視圖的地方)中創建一個lib目錄。將您的.jar文件放在所述lib目錄中。

然後使用MANIFEST.MF上的編輯器將.jar文件添加到類路徑中。如果您希望導出軟件包,則還要添加到導出的軟件包中。 MANFIEST.MF

根據你在做什麼,你可能希望/也需要更新構建配置。 Build Configuration

如果檢查MANIFEST.MF文件本身,然後你會看到Bundle-ClassPath條目。它會列出你的條目。這裏有標準的「。」對於該項目,我們導出了一個resources/目錄,以及一對.jar文件。

Bundle-ClassPath: ., 
resources/, 
lib/aopalliance-1.0.jar, 
lib/apccore-client-2.11.8.jar, 
lib/cglib-nodep-2.2.2.jar, 
lib/ehcache-2.10.3.jar, 
... 

請注意,根據我們的經驗,還有必要從項目本身的屬性中調整Java Build Path。一位用戶評論說,這一步可能沒有必要。由於我們的產品,我們使用的是舊版本的Eclipse,因此YMMV,如果需要(通常編譯失敗是指示器),則需要通過項目的屬性上下文菜單將.jar文件添加到「Java構建路徑「(您可以對資源目錄執行相同的操作)。

Java Build Path

這將允許您正確構建使用.jar文件。

0

對於編譯時間,我們需要將它添加到Project運行時庫中。

對於運行時,您必須將jar打包到您的EAR/WAR文件中,或者將它作爲App服務器庫加載到應用程序服務器。

如果您需要進一步的幫助,請告訴我。