Java项目MyLocalTon运行失败求助:版本兼容与Maven问题
Java版本与JavaFX依赖适配问题解决
问题核心
报错里的class file has wrong version 61.0, should be 55.0是关键:
- 55.0对应Java 11,61.0对应Java 17
- 你用Java 11编译时,项目拉取了基于Java 17编译的JavaFX 21(还是Windows版本的jar,你用的是Linux),再加上Maven要求Java 17和项目指定Java 11的矛盾,直接导致构建失败。
解决步骤
1. 统一Java与JavaFX版本
JavaFX版本必须和编译用的Java版本严格匹配,二选一:
- 方案一:坚持用项目指定的Java 11,把JavaFX版本降到11.x
- 方案二:切换到Java 17(推荐,Maven对高版本Java支持更完善),同步调整JavaFX版本到17.x或21.x
2. 修改pom.xml关键配置
方案一:保留Java 11
调整pom.xml里的版本配置,同时指定Linux系统的JavaFX依赖:
<properties> <!-- 匹配Java11的JavaFX稳定版 --> <javafx.version>11.0.2</javafx.version> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <!-- 给JavaFX依赖加上linux分类器,适配你的系统 --> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-graphics</artifactId> <version>${javafx.version}</version> <classifier>linux</classifier> </dependency> <!-- 其他JavaFX依赖(比如javafx-controls、javafx-fxml)也要同步加上linux分类器 --> </dependencies>
方案二:切换到Java 17
先用sdkman切换Java版本:
sdk use java 17.0.9-amzn # 换成你实际安装的Java17版本号
然后修改pom.xml:
<properties> <javafx.version>17.0.8</javafx.version> <!-- 和Java17匹配的JavaFX版本 --> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-graphics</artifactId> <version>${javafx.version}</version> <classifier>linux</classifier> </dependency> <!-- 其他JavaFX依赖同样添加linux分类器 --> </dependencies>
3. 重新构建项目
执行命令清理旧构建文件并重新运行:
mvn clean install mvn clean javafx:run
入门学习方向
- 先搞懂Java版本和class文件版本的对应关系,避免这类基础版本不兼容错误
- 学习Maven的
compiler插件配置,以及依赖classifier参数的作用(用来区分不同系统的依赖包) - 了解JavaFX的版本绑定规则:JavaFX 11+版本必须和对应的Java版本匹配使用
内容的提问来源于stack exchange,提问作者kuba
相关产品推荐
相关产品推荐

