我在项目中将jdk更改为9版本,然后与错误相撞:
Error:java: java.lang.NoClassDefFoundError: javax/annotation/Generated
我尝试通过将以下内容添加到pom.com来解决它,但它对我来说不起作用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${version.compiler.plugin}</version>
<configuration>
<!-- fork is needed so compiler args can be used -->
<fork>true</fork>
<compilerArgs>
<arg>-J--add-modules</arg>
<arg>-Jjava.annotations.common</arg>
</compilerArgs>
</configuration>
</plugin>
是否有其他方法可以解决?
答案 0 :(得分:11)
将包含所需类的工件添加到类路径中。
看来(未经测试)javax.annotated API就是您所需要的。有关详细信息,请参阅https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api/1.3.1。您可以像以前一样将以下依赖项添加到项目中,它应该存在:
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.1</version>
</dependency>
请记住删除编译器参数!
答案 1 :(得分:1)
我遇到了同样的问题,并通过添加库javax.annotation-api-1.3.2.jar
进行了修复。答案 2 :(得分:1)
我也遇到了同样的问题。 我正在使用 java8,而在 bash_profile 中,版本是 java 11。将其更改为 java 8 有效。 此外,我在虚拟项目中测试该问题(当不是版本问题时)使用 javax.annotation-api-1.3.2 解决。
答案 3 :(得分:0)
从2020年开始,javax。*模块已转换为雅加达。 因此,现在2020+年证明依赖声明为:
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
另请参阅a blog with explanations和a complete table with old and new names