我有两个不同的java项目(为了简单起见,我将它们称为项目1和项目2)加载到eclipse中,项目1被添加到项目2的构建路径中。我已经在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包。
我已尝试过对构建路径配置的所有更改方式,并且没有任何改进的承诺。我能想到的唯一能够解决这个问题的是构建路径配置窗口的Order And Export选项卡中指定的构建路径的顺序。现在订单是:
project 2 packages
EAR Libraries
JRE System Libraries
JUnit4
a few JAR files (c3p0, commons-codec, ojdbc6)
project 1
我不确定问题是在这里还是其他地方。如果有人能帮我解决这个问题,我将非常感激。谢谢你的阅读。
答案 0 :(得分:1)
我想出了这个问题。项目1依赖于项目2作为其构建路径的一部分而没有的几个JAR。我认为,由于Project 1在其构建路径中设置了这些JAR,它仍然可以正常工作。但是,在从Project 1创建类的实例时,我发现Project 2在它自己的构建路径中需要这些JAR。
如果我实例化的类是来自其中一个JAR的类的实现/扩展,这对我来说是有意义的,但它们不是。
无论如何,通过向Project 2添加几个JAR,我修复了问题。谢谢大家。
答案 1 :(得分:0)
您应该为Project 2类文件设置运行配置。
在Eclipse中,您可以右键单击 - 选择Run As - Run Configuration,然后在classpath选项卡中,确保通过单击Add Projects添加Project 1。
答案 2 :(得分:0)
让我们缩小问题的范围,看看它是否与JUnit启动配置有关,或者是涉及两个Eclipse项目的更普遍的问题。
使用main(String [])方法在Project 2中创建一个类。在该方法中,引用项目1中的一个或多个类型,这些类型似乎是导致您的CNFE的。使用Java Application启动配置类型运行此类。 (我假设您的帖子基于“JUnit测试”启动配置类型而无法启动。)报告回来。
此外,我已经看到一些有趣的行为使用JUnit Test启动配置类型与最近的JUnit 4测试,虽然我不认为它完全被打破。所以你可以尝试JUnit 3配置。