【问题标题】:How can be solved java.lang.NoClassDefFoundError: javax/annotation/Generated?如何解决 java.lang.NoClassDefFoundError: javax/annotation/Generated?
【发布时间】:2018-06-22 14:37:59
【问题描述】:

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

还有其他办法解决吗?

【问题讨论】:

    标签: java hibernate maven annotations


    【解决方案1】:
    implementation 'javax.annotation:javax.annotation-api:1.3.2'
    annotationProcessor("javax.annotation:javax.annotation-api:1.3.2")
    

    【讨论】:

    • 请在您的答案中包含更多详细信息,而不仅仅是代码。谢谢!
    • 我用的是Android Studio,将这个添加到项目根目录下的build.gradle中。实现 'javax.annotation:javax.annotation-api:1.3.2' annotationProcessor("javax.annotation:javax.annotation-api:1.3.2")
    • 像魅力一样工作
    【解决方案2】:

    也许为时已晚,但我也遇到了同样的问题,但其他答案都对我不起作用,因为我正在运行一个 Android 项目,并且它已经在 build.gradle 应用程序文件中有这个。

    实现'javax.annotation:javax.annotation-api:1.3.2'

    经过几个小时的研究,我找到了解决办法,就是在上面一行下面加上一行:

    annotationProcessor("javax.annotation:javax.annotation-api:1.3.2")

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我也面临同样的问题。 我在 bash_profile 中使用 java8 时,版本是 java 11。将其更改为 java 8 有效。 另外,我在虚拟项目中测试了该问题(当不是版本问题时)已使用 javax.annotation-api-1.3.2 解决。

      【讨论】:

        【解决方案4】:

        从 2020 年起,javax.* 模块已转移到 jakarta。 所以2020+证明依赖声明现在是:

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

        另请参阅a blog with explanationsa complete table with old and new names

        【讨论】:

          【解决方案5】:

          将包含您需要的类的工件添加到类路径中。

          看来您需要 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>
          

          记得删除编译器参数!

          【讨论】:

          • 非常感谢!它的工作。当解决方案如此简单时,我试图找到相同的东西几个小时。
          • 基本觉得jre变小了,javax.*里面的东西都需要自己带
          • 有一个 Java 10 模块包含包 javax.annotation.processing: --add-modules java.compiler 。是的,用 javax.annotation.processing.Generated 替换 javax.annotation.Generated 是一个障碍。
          • @Johannes 不要添加模块java.compiler 只是为了获得javax.annotation.Generated 注释。添加包含该类型的模块,即java.xml.ws.annotation
          • @Thorbjørn Ravn Andersen 添加此依赖项时,出现错误“ org.apache.maven.plugin.PluginExecutionException: Execution default-test of goal org.apache.maven.plugins:maven-surefire -plugin:2.12.4:test failed: 分叉的 VM 没有正确告别就终止了。VM 崩溃或 System.exit 在构建过程中被调用。我错过了什么吗?
          【解决方案6】:

          我有同样的问题并通过添加库 javax.annotation-api-1.3.2.jar 解决了

          【讨论】:

            猜你喜欢
            • 2019-06-05
            • 2017-09-20
            相关资源
            最近更新 更多