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

升级Java 11后Docker构建Android项目遇javax/xml/bind错误

解决方案

这个错误是因为Java 11移除了javax.xml.bind相关的JAXB模块,而你使用的旧版Android SDK Tools(sdk-tools-linux-4333796对应版本26.1.1)依赖该模块,导致运行sdkmanager时找不到类。以下是两种可行的解决方式:

方式一:升级到兼容Java 11的Android SDK Command-Line Tools

新版的Android SDK Command-Line Tools已经适配了Java 11,无需额外依赖JAXB。修改Dockerfile如下:

FROM ubuntu:18.04

RUN apt-get update && \
  apt-get install -y openjdk-11-jdk wget unzip git dos2unix && \
  rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV ANDROID_SDK_ROOT=/opt/android-sdk-linux

# 下载新版Command-Line Tools(可替换为最新版本链接)
RUN cd /opt && \
  wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O android-sdk.zip && \
  unzip -q android-sdk.zip -d android-sdk-linux && \
  rm android-sdk.zip

# 适配新版工具的路径结构
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
  mv ${ANDROID_SDK_ROOT}/android-sdk-linux/* ${ANDROID_SDK_ROOT}/cmdline-tools/latest/ && \
  rm -rf ${ANDROID_SDK_ROOT}/android-sdk-linux

# 更新环境变量
ENV PATH=${PATH}:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools

# 接受Android许可证
RUN yes | sdkmanager --licenses

# 安装Android构建工具
RUN sdkmanager --update && \
  sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3" "system-images;android-28;google_apis;x86_64"

# 创建AVD
RUN echo "no" | avdmanager create avd -n test -k "system-images;android-28;google_apis;x86_64" --force

COPY . /app
RUN dos2unix /app/gradlew

WORKDIR /app

方式二:为旧版sdkmanager添加JAXB依赖参数

如果需要保留旧版SDK Tools,可以在调用sdkmanager时手动添加JAXB相关的模块依赖。修改Dockerfile中对应的命令行:

# 接受Android许可证(添加JAXB依赖参数)
RUN yes | sdkmanager --licenses --add-modules java.xml.bind,java.activation

# 安装Android构建工具(同样添加参数)
RUN sdkmanager --update --add-modules java.xml.bind,java.activation && \
  sdkmanager --add-modules java.xml.bind,java.activation "platform-tools" "platforms;android-28" "build-tools;28.0.3" "system-images;android-28;google_apis;x86_64"

说明

  • 方式一为推荐方案,新版工具更适配Java 11及后续版本,且Google官方已停止维护旧版SDK Tools。
  • 方式二仅作为临时兼容方案,旧版工具可能存在其他未适配Java 11的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:03:36