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

升级OpenJDK11后编译GWT项目遇java/lang/Object找不到错误

解决OpenJDK11下GWT2.9+Ant编译“找不到java/lang/Object”的问题

核心原因

GWT编译器需要访问JDK基础类库,但Java 9及以后移除了传统的rt.jar,改用模块化结构。Ant构建时如果没正确配置引导类路径,GWT就无法定位java.lang.Object这类核心基础类。

具体修复步骤

1. 给Ant的GWT编译任务配置引导类路径

在调用GWTCompiler的<java>任务中,添加bootclasspath参数,指向OpenJDK11的核心模块文件。示例配置如下:

<java classname="com.google.gwt.dev.Compiler" fork="true" failonerror="true">
  <!-- 保留你原有的classpath配置 -->
  <classpath>
    <pathelement location="gwt-user-2.9.0.jar"/>
    <pathelement location="gwt-dev-2.9.0.jar"/>
    <!-- 你的其他依赖JAR包 -->
  </classpath>
  <!-- 添加引导类路径配置 -->
  <jvmarg value="-Xbootclasspath/p:${java.home}/lib/jrt-fs.jar"/>
  <!-- 其他JVM参数 -->
  <jvmarg value="-Xmx1024M"/>
  <!-- GWT编译目标模块 -->
  <arg value="hashcode"/>
</java>

注:${java.home}会自动指向当前Ant运行依赖的JDK路径,需确保Ant使用的是OpenJDK11。

2. 确认GWT核心依赖版本

确保项目中gwt-user和gwt-dev的版本都是2.9.0——这是官方支持Java 11的最低GWT版本,版本不匹配会导致类路径兼容问题。

3. 强制Ant使用Java 11编译

在Ant构建文件开头指定Java版本,避免Ant默认调用低版本JDK:

<project name="你的项目名" default="compile" basedir=".">
  <property name="java.version" value="11"/>
  <property name="ant.build.javac.source" value="${java.version}"/>
  <property name="ant.build.javac.target" value="${java.version}"/>
</project>

4. 清理缓存后重新构建

先执行Ant的clean任务清除旧编译缓存,再重新运行编译,避免残留文件干扰。

验证标准

编译日志中不再出现Unable to find class java/lang/Object错误,且目标模块编译完成,即为修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:08