Eclipse m2e Junit - mvn-Build之后的ClassNotFound,或者“maven update project”之后缺少的资源

时间:2014-02-14 22:51:21

标签: java maven junit m2e

我的Eclipse安装遇到了一些麻烦。

我有一个Multimodule Maven项目,它构建得很好。所有的罐子都是我期望它们的所在,当我将它部署在我的生产环境中时,它也起作用。

[INFO] Reactor Summary:
[INFO] 
[INFO] Datawizard-M3-Access Parent ....................... SUCCESS [0.344s]
[INFO] m3-datawizard-access-core ......................... SUCCESS [9.474s]
[INFO] m3-datawizard-access-banking-bankAT ............... SUCCESS [0.401s]
[INFO] m3-datawizard-access-banking-denmark .............. SUCCESS [1.143s]
[INFO] m3-datawizard-access-banking-russland ............. SUCCESS [0.353s]
[INFO] m3-datawizard-access-banking-sepa ................. SUCCESS [0.378s]
[INFO] m3-datawizard-access-banking-turkey ............... SUCCESS [0.222s]
[INFO] m3-datawizard-access-gefahrgutstueckliste ......... SUCCESS [0.312s]
[INFO] m3-datawizard-access-logistik-dhl ................. SUCCESS [0.338s]
[INFO] m3-datawizard-access-logistik-exportmanager ....... SUCCESS [0.279s]
[INFO] m3-datawizard-access-logistik-fixmanagement ....... SUCCESS [0.375s]
[INFO] m3-datawizard-access-logistik-frankreich .......... SUCCESS [0.271s]
[INFO] m3-datawizard-access-logistik-landwher ............ SUCCESS [0.501s]
[INFO] m3-datawizard-access-logistik-nordic .............. SUCCESS [0.274s]
[INFO] m3-datawizard-access-logistik-turkey .............. SUCCESS [0.324s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 36.851s
[INFO] Finished at: Fri Feb 14 23:37:34 CET 2014
[INFO] Final Memory: 38M/358M
[INFO] ------------------------------------------------------------------------

当我在maven构建之后启动JUnit测试时,我得到了一个ClassNotFound Exception。

Class not found com.lr.datawizard.cron.TurkeyLstPackagesTest
java.lang.ClassNotFoundException: com.lr.datawizard.cron.TurkeyLstPackagesTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

即使重启Eclipse也无法解决问题。 为了摆脱这个例外,我必须使用Eclipse的“Project - > Clean Project”功能来清理项目。之后,也可以运行“Maven - > Update Project”,测试开始。

,这是最大的问题 清理项目后(以任一方式),src / main / resources中的资源将消失在target / classes文件夹中。由于这个原因,我的测试不再正常运行,因为它们依赖于一些不再可用的弹簧配置文件。

在德语中我们说“DieKatzebeißtchichin den Schwanz”(有点像“猫咬自己的尾巴”) 我必须构建项目以使所有内容都正确到位,但是由于(奇怪的)ClassNotFound异常而导致测试不运行)清理时,execption会消失,而且我需要运行tes的文件。

有人知道如何解决这个问题吗?

PS: - 我重新安装了e eclipse的新副本(只有me2和颠覆) - 我删除了所有.classpath,.project,.setting文件/文件夹 - 我从svn检查了一份新的副本,我100%确定它是有效的,因为我有一些测试协议。

没有任何想法如何解决这个问题。我花了两天时间。

1 个答案:

答案 0 :(得分:2)

经过另一天的游戏,我发现了很多东西。

1日食或eclipse和m2e的组合似乎有问题。 类路径未正确设置。右键单击项目时,选择“构建路径” - > “配置构建路径”,将打开一个窗口,其中选择了“源”选项卡。enter image description here

正如您所看到的,在两个以“资源”结尾的源文件夹中都有“exclude:**” 这在我的理解中是不正确的。通过删除它,所有资源都可以正确地“编译”到类或测试类文件夹中。

第二件事是maven build之后的“ClassNotFoundException”。 这也是可以理解的。在我的maven run属性中,我选择了“跳过测试”。这导致src / test / java未包含在构建过​​程中。这就是为什么班级不存在而异常实际上是正确的。 只需在maven构建后清理或“maven update project”,一切都恢复正常。

Imho这是IDE(或其中一个组件)的错误行为,但至少我知道它发生的原因。

我希望我的回答可以帮助那些患有同样问题的人。

干杯,基督徒