我在這裏看過和更廣泛的網絡來找到解決方案。有相關的材料,但我一直無法找到有關我的具體問題的任何有用信息。在可執行jar中的類路徑設置似乎不適用於插件
我正在研究一些需要接受插件的Java軟件。我不想使用像OSGi這樣的花哨框架,而ServiceLoader似乎提供了正確的支持。我基本上已經工作了,但是在classpaths中遇到問題。我的目錄結構如下:
progfolder |___________ plugintest.jar |___________/plugins |________ plugin1.jar |________ plugin2.jar
如果我運行plugintest.jar與java -jar plugintest.jar
那麼它沒有找到的講座即使我添加./plugins/插件(或這個變化)路徑:在清單中。閱讀表明,這隻適用於類,而不是罐子,所以我試圖直接在plugins
內部的兩個插件的類中,並在其目錄的完整路徑,但沒有成功。
如果我使用-jar
選項,我不允許添加-cp plugins/*
來將plugins文件夾添加到類路徑中。爲了解決這個問題,我可以運行使用java -cp plugintest.jar;plugins/* com.plugin.test.Main
,這可以按預期工作 - 兩個插件都可以通過代碼檢測到,但命令行有點笨拙,儘管我可以忍受它,如果這是最好的選擇。
我發現了另一個解決方案,我在plugins
中創建了一個罐子類加載器,它適用於這種簡單情況,但是閱讀表明我可能遇到更復雜的應用程序中的安全問題。
有沒有辦法解決的事情,所以我可以簡單地運行與java -jar plugintest.jar
而無需做我自己的類加載,或者這只是它的方式?