2014-01-13 24 views
0

我是將舊的Java代碼庫移植到OSGI。在舊的代碼庫中使用了動態代碼生成。示例一個字符串被編譯爲使用 com.sun.tools.javac.Main.compile生成Java類。OSGI中com.sun.tool.javac的類未找到錯誤

我被重用相同的代碼和在etc/custom.properties加入com.sun.tools.javac - > Karaf的org.osgi.framework.system.packages.extra:= com.sun.tools.javac.Main

運行期間我得到的異常java.lang.NoClassDefFoundError: com/sun/tools/javac/Main

任何人都可以請幫我出一些建議來克服這個問題。

回答

1

我不知道卡拉夫,但你爲什麼在房產設置中使用:=而不是= =?另外,屬性值是包名稱列表,而不是類型名稱。所以有趣的包是「com.sun.tools.javac」。

+0

對不起,這是一個錯字,實際上我只使用了org.osgi.framework.system.packages.extra = com.sun.tools.javac。據我瞭解,org.osgi.framework.system.packages.extra告訴karaf容器加載默認未加載的其他包。如果我刪除com.sun.tool.javac,我的許多捆綁軟件都無法啓動。如果我添加他們開始,但在運行時得到錯誤。 –

+0

com.sun.tools.javac包是否可見於框架impl的類加載器? –

+0

嗨,我能夠解決這個問題。我用tools.jar製作了一個名爲「SunTools」的軟件包,並在Export-Package中公開了所需的軟件包並進行了部署。 –