【发布时间】:2020-07-10 01:39:48
【问题描述】:
我们将 Eclipse Annotation 处理与 Velocity 代码生成框架一起使用。 不久前,我们更新了所有代码和构建以使用 Java 11 - 并且没有注意到代码生成不再起作用。 (我们暂时不需要更改任何生成的代码。)
在更新各种 jar 并重建 Eclipse 插件后,它试图调用我们的代码生成处理器 - 但它收到了 DataModelClassWrapper 类的 NoClassDefFound 错误。这应该很容易解决,但是具有该类的 jar 已经在项目类路径中,并且在 Eclipse 注释 FactoryPath 中。我已经验证了 .class 也在 .jar 文件中。此外,VelocityCodeGenProcessor 类(错误的来源)与DataModelClassWrapper 在同一个 jar 和包中。
请注意,我们通过从中提取 .jar 并将其添加到项目的类路径和注释工厂路径中来使用“插件”。
此时我怀疑要么我遗漏了一些明显的东西,要么我发现了一些模糊的角落问题案例。 (很可能是前者)
eclipse.buildId=4.16.0.I20200604-0540
java.version=11.0.7
java.vendor=AdoptOpenJDK
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
org.eclipse.jdt.apt.pluggable.core
Error
Wed Jul 08 17:13:06 PDT 2020
Exception thrown by Java annotation processor com.metrixsoftware.build.annotationProcessor.velocityCodeGen.VelocityCodeGenProcessor@2ccc9525
java.lang.Exception: java.lang.NoClassDefFoundError: Could not initialize class com.metrixsoftware.build.annotationProcessor.velocityCodeGen.DataModelClassWrapper
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:172)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:124)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:171)
at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:138)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotationsInternal(Compiler.java:958)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:932)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:450)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:386)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:214)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:345)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:79)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:275)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:198)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:832)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.metrixsoftware.build.annotationProcessor.velocityCodeGen.DataModelClassWrapper
at com.metrixsoftware.build.annotationProcessor.velocityCodeGen.DataModel.getWrapped(DataModel.java:35)
at com.metrixsoftware.build.annotationProcessor.velocityCodeGen.DataModel.doAnalysis(DataModel.java:90)
at com.metrixsoftware.build.annotationProcessor.velocityCodeGen.VelocityCodeGenProcessor.process(VelocityCodeGenProcessor.java:170)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
... 25 more
【问题讨论】:
标签: java eclipse velocity annotation-processing