Tag: sun codemodel

NoClassDefFoundError:注释处理期间的org / junit / AfterClass

我在使用maven进行注释处理期间使用CodeModel生成代码。 该代码用于JUnit测试: JMethod tearDownClass = testClass.method( JMod.PUBLIC | JMod.STATIC, Void.class, “tearDownClass”); tearDownClass._throws(Exception.class); tearDownClass.annotate(AfterClass.class); <- java.lang.NoClassDefFoundError 然而,编译过程在尝试检索java.lang.NoClassDefFoundError : org/junit/AfterClass时抛出了java.lang.NoClassDefFoundError : org/junit/AfterClass AfterClass.class ,这是一个注释本身。 对JUnit的依赖定义如下: junit junit 4.8.2 所以我的代码中应该有AfterClass.class 。 我该如何解决这个问题? 不清楚 调用codemodel的代码位于编译库中,其中junit不是“测试”依赖项。 但是,调用生成代码的代码具有相同的junit依赖性,但作为测试依赖性。 如果我将后一个依赖项更改为“not-a-test”依赖项,则问题就会消失。 为什么我必须将此依赖项定义为“not-a-test”,尽管只有调用codemodel的库明确使用它? 编辑 这是依赖树: net.dwst:codegentest:jar:1.0.0 +- junit:junit:jar:4.8.2:compile +- org.sonatype.maven.plugin:emma-maven-plugin:jar:1.2:test | +- emma:emma:jar:2.0.5312:test | \- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:test | +- commons-validator:commons-validator:jar:1.2.0:test | | +- commons-beanutils:commons-beanutils:jar:1.7.0:test | […]