Maven抛出错误不支持的类版本错误

ohfgkhjo  于 2023-03-29  发布在  Maven
关注(0)|答案(2)|浏览(199)

我看到下面的错误时,试图运行maven。Java和javac是1.7(版本如下所示,和maven是3.9.0。我使用的是mac os。
任何帮助都将不胜感激。

mvn
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:140)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:259)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

pwd
/usr/local/Cellar/maven/3.9.1

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

javac -version
javac 1.7.0_80
zdwk9cvp

zdwk9cvp1#

maven 3.9.x将需要java 1.8。参见maven release history
你现在

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 52.0

如果您可以看到错误说,有一个不受支持的版本使用,它给你的版本52.0。
此52版本与Java 1.8相关联。检查:classFileStructure
简单地说,这个错误告诉你maven实现是在Java 8中编译的,你正在使用不受支持的版本。
Java 8解决你的问题

olmpazwi

olmpazwi2#

Maven 3.9.1至少需要Java 1.8。但如果您的应用程序需要Java 1.7,您仍然可以使用Java 1.7使用maven工具链构建应用程序。
${user.home}/.m2/toolchains.xml中,如下配置Jdk。

<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>1.7</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
      <jdkHome>/path/to/jdk/1.7</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

在您的pom.xml中,按如下方式配置工具链。

<plugins>
  ...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-toolchains-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
      <execution>
        <goals>
          <goal>toolchain</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <toolchains>
        <jdk>
          <version>1.7</version>
          <vendor>sun</vendor>
        </jdk>
      </toolchains>
    </configuration>
  </plugin>
  ...
</plugins>

注意:不要更改JAVA_HOME环境变量;它应该指向Java 1.8或更高版本的Java。
通过使用工具链,Maven将使用Java1.8,项目将使用Java1.7编译
参考:Guide to Using Toolchains

相关问题