This question already has answers here:
How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version
                                
                                    (51个答案)
                                
                        
                3年前关闭。
            
        

我通过以下代码编译了代码:export JAVA_HOME=/usr/lib/jvm/java-8-oracle; mvn package。我有:

Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.8.0_101, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-oracle/jre
Default locale: cs_CZ, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-77-generic", arch: "amd64", family: "unix"


但是用java -jar ...运行后,出现错误:Unsupported major.minor version 52.0
有人知道我做错了吗?我已经读过,当编译是在较旧的Java中运行,而在较新的Java中运行时,则出现此错误,反之亦然,但是在两种情况下,我都使用Java 8。

最佳答案

为系统设置的默认Java VM与运行mvn(java8)时使用的Java VM不同(java7或更早)。

你可以跑

/usr/lib/jvm/java-8-oracle/bin/java -jar


或在〜/ .mavenrc中设置JAVA_HOME

JAVA_HOME=/usr/lib/jvm/java-8-oracle


如果您正在运行Ubuntu,则要“永久”修复它,应以root用户身份运行此命令:

sudo update-alternatives --config java


它将显示系统上已安装的Java替代产品,您将能够设置哪个应为默认替代产品(在您的情况下为java8)。

您可能希望对其他Java命令执行相同的操作,例如:

sudo update-alternatives --config javac
sudo update-alternatives --config java_vm
sudo update-alternatives --config jcontrol
sudo update-alternatives --config jexec

07-24 09:15