2015-10-19 73 views
0

關於Java反射機制的一個簡單問題。我的程序應該加載.jar文件中的.class項。Java Reflection Imports

我得到一個java.lang.NoClassDefFoundError的jar文件中的類,這是導入外部包(我沒有訪問)。是否有機會通過例外而不必導入所需的軟件包。

謝謝。

+1

您在Jar * A *中有類,這些類依賴於另一個Jar * B *中的類,但是您的類路徑中只包括Jar * A *,那麼您說的是什麼?不,沒有辦法加載這些類,因爲它們的實現取決於缺少的代碼。你究竟在做什麼? – dimo414

+0

是的,這幾乎是:)。 TY – KarateCoder

+0

您對「無法訪問」有何意義?你不知道如何將它添加到你的運行時類路徑中,或者jar文件不在那裏? – CoronA

回答

0

我不這麼認爲 - 爲了加載反射,您必須使用類加載器加載類,然後可以例如實例化對象並執行方法,因此您需要依賴關係。

如果你不想實例化或執行,那麼字節碼庫將允許你檢查類文件的內容。

+0

任何好的字節碼庫?謝謝 ! – KarateCoder

+0

http://stackoverflow.com/questions/32451754/which-one-to-use-cglib-or-javaassist –

0

其他是正確的,你不能從依賴關係的依賴項直接導入代碼。

也就是說,防止這個問題的好方法是使用像Maven和Gradle這樣的構建技術。當您使用這兩種技術導入依賴項時,您會自動導入依賴關係的依賴關係。