You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 7升级至Java 11遇NoClassDefFoundError错误求助

解决Java 11下javax/annotation/PreDestroy缺失的问题

问题根源

Java 9开始推行模块化系统,原JDK中包含的JEE相关javax.annotation包被移除,这些API不再属于JDK核心类库,因此升级到Java 11后会出现NoClassDefFoundError。

解决方案

需要手动引入包含javax.annotation相关API的第三方依赖,以下是适配Ant构建的具体操作:

方式一:手动添加Jar包

  1. 下载javax.annotation-api-1.3.2.jar(当前稳定版)
  2. 将Jar包放入项目的lib目录
  3. 修改Ant的build.xml,确保该Jar被纳入编译和运行的Classpath:
    <!-- 定义项目Classpath -->
    <path id="project.classpath">
        <fileset dir="lib" includes="**/*.jar"/>
        <!-- 保留原有其他依赖配置 -->
    </path>
    
    <!-- 编译任务引用Classpath -->
    <javac srcdir="src" destdir="bin" classpathref="project.classpath" source="11" target="11"/>
    
    <!-- 运行任务引用Classpath -->
    <java classname="你的主类全限定名" classpathref="project.classpath"/>
    

方式二:用Ant Ivy管理依赖(若项目已集成Ivy)

在ivy.xml中添加依赖配置,让Ivy自动下载并管理Jar包:

<dependency org="javax.annotation" name="javax.annotation-api" rev="1.3.2" conf="compile->default"/>

确保Ant的构建流程包含Ivy的resolve任务,将依赖自动引入Classpath。

验证

重新执行Ant构建并运行项目,javax/annotation/PreDestroy的缺失错误应该会消失。如果还有PostConstruct等同包类的缺失,该Jar也已包含这些类,无需额外引入。

内容的提问来源于stack exchange,提问作者Nani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:02:37