class.forName,在不同的项目中查找类,抛出ClassNotFoundException

时间:2013-08-23 09:16:30

标签: java eclipse

在eclipse中,我有两个不同的项目:ProjectX,generic和projectA specific。

在projectX中:

 public static final Plugin getPlugin(String sIdentifier ) {
     String sPluginClassName = "packageName.blabla.ClassName";
     try {
                pluginClass = Class.forName(sClassName);
    ...
    } catch (ClassNotFoundException e) {
                throw new BusinessException(sIdentifier, e);
    }
}
projectA中的

package packageName.blabla;

public class ClassName () {
 ....
}

在执行期间,由于ClassNotFoundException,我得到了一个BusinessException。类路径正常(复制/粘贴未写入)。在eclipse项目中,java构建路径/库包含projectX文件夹,projectX构建路径没有任何对projectA的引用(看似合法)。

这在与ProjectX的projectB特定交互中工作正常(我不知道在哪里  差异:我已经检查了两个构建路径,它以相同的方式完成。)

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

  

projectX构建路径没有对projectA的任何引用(似乎是合法的)。

虽然projectA上不需要projectX的构建时依赖项,但projectA的“bin”目录需要位于projectX的执行类路径中。如果不是,那么Class.forName中对getPlugin的调用将不会查看“projectA / bin”目录,也不会找到它正在尝试加载的类。


可以通过“运行>运行配置”窗口配置执行类路径。

  • 选择应用程序的运行配置。
  • 转到Classpath面板
  • 选择用户类路径
  • 单击“添加项目”,然后选择要添加的项目。
  • 应用配置更改。