2013-05-03 86 views
1

我做了一個eclipse插件,它對JavaProject起作用。它需要訪問包含在項目類的字節碼中的信息,因此,我使用了一個URLClassLoader(告訴它這些類位於項目的「bin」文件夾中)以獲取對類的引用並檢索所有我需要的信息。不幸的是,當我打電話的方法loadClass("a certain class in JavaProject")我得到這個類型的錯誤:eclipse插件中的類加載

org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javassist/bytecode/BadBytecode 

我發現,這種錯誤是由於外部庫添加到JavaProject的的Buildpath不是「已知的事實「由類加載器:這些庫的課程都是由JavaProject的類

在前面的情況下使用,使用圖書館了Javassist 的BadBytecode類一類JavaProject

的這番講話
public static void main(String[] args) throws NotFoundException, BadBytecode, IOException, CannotCompileException{ 

那麼,如何讓我的插件可見導入Java項目外部庫的類?

回答

0

您可以訪問使用JavaCore.create([爲IProject])API,讓你有API來遍歷構建路徑的IJavaProject Java項目的構建路徑。話雖如此,你絕對應該而不是這樣做。 URLClassLoader沒有重載現有類的概念,所以在用戶編輯代碼時它永遠不會看到更新的版本,並且它具有鎖定jar文件(例如構建路徑上的文件)的傾向。 JDT具有用於安全遍歷不涉及使用類加載器的Java項目的類型結構的API。