2013-05-03 84 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。