我有两个不同的Java项目(为简单起见,我将它们分别称为项目1和项目2)加载到eclipse中,并且将项目1添加到项目2的构建路径中。我已经在project的src文件夹中导入了唯一的包1进入项目2的测试类中,并且在该测试类的代码中,我具有来自项目1的类的简单对象声明,如下所示:

ProjectOneClass object = new ProjectOneClass();


这段代码编译没有错误,编译器认识到这些类在构建路径上。但是,当我通过Junit4将代码作为Java应用程序运行时,遇到这些代码行时,程序将引发ClassNotFoundExceptions。该代码应该将这些ClassNotFoundExceptions打印到错误日志中,但是由于某种原因,什么都没有打印出来。我正在使用一个简单的

try {
    ...
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}


结构,所以我不知道为什么它不打印到错误日志。

JUnit的打印输出很简单:

Junit execution complete
Summary: 4 succeeded, 3 failed.


成功的四个不引用导入的项目1包。

我尝试了各种方式来更改构建路径配置,但是没有任何改进的希望。我唯一能解决的问题就是构建路径配置窗口的“订购并导出”选项卡中指定的构建路径顺序。现在的顺序是:

project 2 packages
EAR Libraries
JRE System Libraries
JUnit4
a few JAR files (c3p0, commons-codec, ojdbc6)
project 1


不过,我不确定问题出在这里还是其他地方。如果有人可以帮助我,我将非常感激。谢谢阅读。

最佳答案

我发现了问题。 Project 1依赖于Project 2作为构建路径的一部分而没有的几个JAR。我认为,由于Project 1在其构建路径中设置了这些JAR,它仍然可以正常工作。但是,从Project 1创建类的实例时,我发现Project 2在其自己的构建路径中需要这些JAR。

如果我要实例化的类是来自这些JAR之一的类的实现/扩展,那对我来说是有意义的,但事实并非如此。

无论如何,通过在Project 2中添加几个JAR,我解决了这个问题。谢谢大家。

07-28 04:21