如何解决java.lang.NoClassDefFoundError:javax/annotation/Generate?

2022-09-01 07:21:56

我在我的项目中将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>

它有其他解决方法吗?


答案 1

将包含所需类的项目添加到类路径中。

看来javax.annotation API是你需要的。有关详细信息,请参阅 https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api/1.3.2。可以将以下依赖项像添加到任何其他依赖项一样添加到项目中,并且它应该存在:

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

请记住删除编译器参数!


答案 2

从2020年开始,javax.*模块已过渡到雅加达。因此,2020+ 证明依赖关系声明现在是:

<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>

另请参阅包含说明的博客以及包含新旧名称的完整表格


推荐