我做了一个项目,这个项目在我的本地可以正常启动和编译,但是在服务器上不行
服务器上只要一启动,就报
错误: 加载主类 org.springframework.boot.loader.launch.JarLauncher 时出现 LinkageError
java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/launch/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the JavaRuntime only recognizes class file versions up to 55.0
看解决方案都是说 Java 的版本不对,可是我的 java 版本明明是对的
首先我使用的是 JDK21 ,我在 idea 中确保了一下内容是 JDK21
本地使用的 JDK 也是 21
服务器的 jdk 也是 21
感觉一点问题都没有,然而只要部署到服务器,就会报上面的问题,给我整不会了
另外下面是我的 pom 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<packaging>jar</packaging>
<groupId>com.example.oa</groupId>
<artifactId>example_server</artifactId>
<properties>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version> <!-- 根据需要选择版本 -->
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我远程部署使用的命令是
sudo nohup java -jar msp_oa_server-3.4.2.jar > /home/server/msp_oa_server.log 2>&1 &
对于这个问题,我无论是问 AI 还是去搜索引擎查找,都没有找到好的解决方案,他们大多是在重复说是 java 版本不对,然而我怎么看都感觉是对的,实在没办法,来求助各位大佬了,希望有懂得能救一下
1
zacharyjia 3 小时 37 分钟前
你运行一下 sudo java -version 试试,是不是你的普通用户和 root 用户的 path 配置不一样,使用了不同的 java 版本?
|
![]() |
2
sujin190 3 小时 32 分钟前 via Android
本地和服务器子版本号差了好几个了吧,要不本地降个版本编译下试试?
|
3
zacharyjia 3 小时 25 分钟前
@sujin190 不至于,他报错显示 class 文件版本号 61 ,应该是 target version 到 java 17 ,但是 runtime 支持的最高版本号是 55 ,对应 java 11 ,肯定是服务器上运行的时候用成了 jdk11
|