2012-07-18 80 views
2

我有一个eclipse rcp应用程序。此应用程序将尝试从应用程序之外的目录加载类文件。但是,我总是得到一个ClassNotFoundException的错误。你有什么想法如何类加载在eclipse rcp中工作?类加载eclipse rcp

基本用例是

  1. 读取XML文件 - 做
  2. 将在导航的XML数据 - 做
  3. 当用户在导航点击数据,找到一个目录中的类尝试加载它 - classnotfoundexception

我创建了一个测试java项目,我添加了外部类库,它可以找到这些成功。但是,如果我在eclipse rcp中整合它,它会抛出该错误。

回答

4

Eclipse RCP应用程序使用OSGi类加载支持来查找与您的应用程序中的OSGi包(插件)相关联的类加载器。如果你想从某个地方加载一个类,那么你需要创建一个ClassLoader,它可以从一个目录加载一个类(也许使用URLClassLoader)。所以你需要创建其中的一个,并使用它从所需的位置加载类。

+0

谢谢。我正在使用旧的ClassLoader,应该使用URLClassLoader。 – jantox 2012-07-18 06:07:14

+0

现在的问题是,使用下面的代码时,不存在注释。类im加载只是一个JUnit4 TestSuite。 URL classUrl; classUrl = testSuiteDir.toURI()。toURL(); URL [] classUrls = {classUrl}; URLClassLoader ucl = new URLClassLoader(classUrls); 类 cls = ucl.loadClass(clazz.getClassName()); (cls.isAnnotationPresent(SuiteClasses.class)){ \t System.out.println(“true”); } else { \t System.out.println(“false”); } – jantox 2012-07-18 06:38:02