0

0

解决Cordova构建失败:Java 19与Cordova 11的兼容性指南

心靈之曲

心靈之曲

发布时间:2025-10-07 13:28:01

|

1049人浏览过

|

来源于php中文网

原创

解决Cordova构建失败:Java 19与Cordova 11的兼容性指南

本文详细介绍了使用Cordova 11.0.0配合Java 19时可能遇到的构建失败问题,主要表现为“Unsupported class file major version 63”和NoClassDefFoundError。核心解决方案是降级Java开发工具包(JDK)至版本11,以确保与Cordova及其依赖的Android平台工具的兼容性,从而顺利完成项目构建。

1. 问题描述

在cordova项目开发中,当开发者尝试使用cordova build命令构建android应用时,可能会遇到一系列构建错误,尤其是在使用较新版本的java开发工具包(jdk),例如java 19时。常见的错误包括:

  • cordova requirements 命令失败: 在执行cordova requirements检查环境时,可能出现Command failed with exit code 1: avdmanager list target,并伴随java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema的错误信息。这表明Android SDK工具在当前Java环境下无法正常运行。

    C:\Users\NAME\Desktop\TestProject>cordova requirements
    
    Requirements check results for android:
    Java JDK: installed 19.0.1
    Android SDK: installed true
    Android target: not installed
    Command failed with exit code 1: avdmanager list target
    Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
            at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
            ...
    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
            ...
    Some of requirements check failed
  • cordova build 命令失败: 在执行cordova build时,构建过程会因为Gradle的编译问题而终止,报错信息通常为“FAILURE: Build failed with an exception.”,并指出“Could not compile settings file”以及“Unsupported class file major version 63”。

    C:\Users\NAME\Desktop\TestProject>cordova build
    ...
    FAILURE: Build failed with an exception.
    
    * Where:
    Settings file 'C:\Users\NAME\Desktop\TestProject\platforms\android\settings.gradle'
    
    * What went wrong:
    Could not compile settings file 'C:\Users\NAME\Desktop\TestProject\platforms\android\settings.gradle'.
    > startup failed:
      General error during semantic analysis: Unsupported class file major version 63

这些错误通常发生在以下配置环境中:

  • Java Version: 19.0.1
  • Cordova Version: 11.0.0
  • NPM Version: 7.15.0
  • Gradle Version: 6.9.3

2. 原因分析

问题的核心在于Java版本与Cordova、Gradle以及Android SDK工具链之间的兼容性。

  • Unsupported class file major version 63: 这个错误信息直接指明了问题所在。Java类文件有一个主版本号,用于标识编译该文件的JDK版本。主版本号63对应的是Java 19。当Gradle或其依赖的某个组件(特别是Android Gradle Plugin)是用较低版本的Java(如Java 8或Java 11)编译的,并且尝试加载由Java 19编译的类文件时,就会出现这个错误,因为它无法识别更高版本的类文件格式。反之,如果Gradle或Android Gradle Plugin本身不支持在Java 19环境下运行,也会导致编译失败。
  • java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema: 这个错误与Java SE模块化有关。从Java 9开始,javax.xml.bind包(JAXB API)被移除了Java SE的默认类路径,成为一个独立的模块。Java 8及之前的版本默认包含JAXB。Android SDK的一些旧工具(如avdmanager)可能仍然依赖JAXB,但在Java 9及更高版本中,如果未明确添加JAXB模块,就会出现NoClassDefFoundError。

综合来看,Cordova 11.0.0及其依赖的Android平台工具和Gradle版本在设计时可能并未完全兼容Java 19。

3. 解决方案:降级Java版本至JDK 11

解决上述问题的最直接且有效的方法是将Java开发工具包(JDK)降级到与Cordova及其依赖工具链更兼容的版本,通常是JDK 11。Cordova官方文档也推荐使用特定版本的JDK。

立即学习Java免费学习笔记(深入)”;

3.1 检查当前Java版本

在执行降级操作之前,首先确认当前系统正在使用的Java版本。 打开命令行或终端,输入:

java -version

如果输出显示Java版本为19.x.x,则需要进行降级。

3.2 安装JDK 11

从官方渠道下载并安装JDK 11。推荐的下载源包括:

  • Adoptium (Eclipse Temurin):提供免费、开放源代码的JDK构建。 访问 Adoptium官网,选择JDK 11版本进行下载。
  • Oracle JDK:需要Oracle账号并同意许可协议。 访问 Oracle JDK下载页面,选择Java 11版本。

根据您的操作系统(Windows, macOS, Linux)选择相应的安装包并进行安装。

3.3 配置环境变量 JAVA_HOME

安装JDK 11后,需要确保系统正确指向新安装的Java版本。这通常通过设置或修改JAVA_HOME环境变量来实现。

Closers Copy
Closers Copy

营销专用文案机器人

下载

Windows 系统:

  1. 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
  2. 在“系统变量”下,查找JAVA_HOME变量。如果存在,编辑它;如果不存在,新建一个。
  3. 将JAVA_HOME的值设置为JDK 11的安装路径,例如:C:\Program Files\Java\jdk-11.0.x。
  4. 在Path变量中,确保 %JAVA_HOME%\bin 位于其他Java路径之前,或者移除旧的Java路径。
  5. 点击“确定”保存更改。
  6. 打开一个新的命令行窗口(旧的窗口可能不会立即生效),再次运行java -version确认版本已更新。

macOS / Linux 系统:

  1. 打开终端。
  2. 编辑您的shell配置文件(例如 ~/.bashrc, ~/.zshrc, ~/.profile)。
    nano ~/.zshrc # 或 ~/.bashrc
  3. 添加或修改以下行,将/path/to/jdk-11.0.x替换为您的JDK 11实际安装路径:
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.x.jdk/Contents/Home # macOS 示例
    # 或者 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # Linux 示例
    export PATH=$JAVA_HOME/bin:$PATH
  4. 保存文件并退出编辑器。
  5. 在终端中执行以下命令使更改生效:
    source ~/.zshrc # 或 source ~/.bashrc
  6. 运行java -version确认版本已更新。

4. 验证解决方案

完成Java版本降级和环境变量配置后,返回到您的Cordova项目目录,重新运行cordova requirements和cordova build命令。

  1. 检查环境要求:

    cordova requirements

    此时,Java JDK应该显示为installed 11.x.x,并且Android target相关的错误应该消失。

  2. 重新构建项目:

    cordova build android

    如果一切顺利,项目应该能够成功构建,不再出现“Unsupported class file major version 63”或NoClassDefFoundError等错误。

5. 注意事项与最佳实践

  • Cordova官方文档: 始终查阅您所使用的Cordova版本对应的官方文档,了解其推荐的JDK、Gradle和Android SDK版本。这能有效避免兼容性问题。
  • 多Java版本管理: 如果您的开发环境需要同时使用多个Java版本(例如,不同的项目依赖不同的JDK),可以考虑使用Java版本管理工具,如:
    • SDKMAN! (Linux/macOS):一个强大的命令行工具,用于管理多个SDK版本,包括Java、Gradle等。
    • jEnv (macOS/Linux):另一个Java版本管理工具。
    • 手动切换环境变量 (Windows):通过批处理脚本或修改系统环境变量来切换JAVA_HOME。
  • Gradle版本: 确保Cordova项目使用的Gradle版本也与JDK 11兼容。通常,Cordova会自动配置合适的Gradle版本,但如果手动修改过,需确保兼容性。
  • Android SDK Tools: 保持Android SDK Tools为最新版本,但要注意其与JDK的兼容性。在大多数情况下,JDK 11是当前Cordova Android平台广泛支持的版本。

通过遵循上述步骤和最佳实践,您可以有效地解决Cordova构建过程中因Java版本不兼容而导致的错误,确保开发流程的顺畅。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

825

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

724

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

731

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

396

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

445

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

429

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16881

2023.08.03

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.2万人学习

Java 教程
Java 教程

共578课时 | 40.4万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号