【发布时间】:2014-04-16 17:08:40
【问题描述】:
所以这个问题会有些模糊,我很抱歉,但我什至不知道从哪里开始。我们使用 Jenkins 在夜间自动化一些构建。我们使用 Maven 执行构建。有一段时间,一切都很顺利。我们有发现错误、代码覆盖率结果和成功构建的稳定历史。突然之间,在运行单元测试时,我们得到了随机的 NoClassDefFound 异常。这很奇怪,因为在此之前,日志消息清楚地表明它构建了源并成功了。然后单元测试开始运行,它们立即死亡,出现上述异常。我们最近确实对 Jenkins 进行了更新,但我并不完全相信这与它有很大关系。真正奇怪的部分是构建并不总是因为这个异常而失败。有时他们跑得很好,有时他们会立即失败。就失败的特定单元测试或无法找到的特定类而言,失败是不一致的。虽然它们似乎围绕着相同的一小部分类和单元测试,但似乎没有任何真正的模式。
有没有其他人在詹金斯上看到过 maven 构建?我真的不知道该怎么办。日志消息并不完全有用,我不知道我可以对 Jenkins 配置做些什么来从失败的构建中获得更好的调试信息。如果有人有任何想法,我可以收集任何人可能需要的任何信息。以下是最近失败的构建之一的示例堆栈跟踪:
com.ipti.ptl.common.problems.detectors.CMDRProblemDetectorTest.afterPropertiesSetTest
Failing for the past 3 builds (Since Unstable#411 )
Took 18 ms.
Error Message
com/ipti/hardware/bcicinterface/CPacketReceivedArgs
Stacktrace
java.lang.NoClassDefFoundError: com/ipti/hardware/bcicinterface/CPacketReceivedArgs
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 java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
at java.lang.Class.getDeclaredMethods(Class.java:1845)
at com.ipti.common.eventbus.EventBus.subscribe(EventBus.java:107)
at com.ipti.ptl.common.problems.detectors.CMDRProblemDetector.afterPropertiesSet(CMDRProblemDetector.java:23)
at com.ipti.ptl.common.problems.detectors.CMDRProblemDetectorTest.afterPropertiesSetTest(CMDRProblemDetectorTest.java:37
【问题讨论】:
-
@Chris No. 它只有默认构造函数、单个实例字段和实例方法。一个实例字段是我们的类之一,它也没有。
标签: java unit-testing maven jenkins noclassdeffounderror