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

时间:2018-01-13 07:57:43

标签: java hibernate maven annotations

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

是否有其他方法可以解决?

4 个答案:

答案 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 explanationsa complete table with old and new names