【问题标题】:Spring-Boot on mac with Java 8, Unsupported major.minor version 51.0带有 Java 8 的 Mac 上的 Spring-Boot,不支持的 major.minor 版本 51.0
【发布时间】:2017-05-07 04:12:27
【问题描述】:

我在我的 mac 上创建了一个示例 spring-boot 项目。但是当我尝试在其上运行 maven 命令时(例如mvn spring-boot:run),我收到以下错误:

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

当然是强制性的堆栈跟踪。我从阅读许多其他类似(但不相同)问题的答案中知道,这与使用更新版本的 Java 编译,然后使用早期版本的 Java 运行有关。根据这张图表:

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

我必须以某种方式使用 Java 7 编译,然后以某种方式使用 Java 6 运行。但我不明白这是怎么回事。我很确定我使用的是 Java 8。一方面,当我在终端中输入 java -version 时,我得到:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

另外,我的 pom 明确指定使用 Java 8:

  <project>

    <!-- project info -->

    <name>springboot-demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.3.RELEASE</version>
      <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
    </properties>

    <!-- dependencies -->

  </project>

到目前为止,我读过的所有答案都说用 Java 6 编译,或者只使用 Java 8...但我使用的是 Java 8!另外,由于我得到的错误是“51.0”而不是“52.0”,这是否意味着我正在使用 Java 7 进行编译?据我所知,我只使用 Java 8!

最重要的是,我该如何解决这个问题?

【问题讨论】:

    标签: macos spring-boot java-8 environment-variables java-home


    【解决方案1】:

    问题在于我没有明确的 JAVA_HOME。

    当在终端输入which java 时,我会得到 /usr/bin/java
    这只是一个指向/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home/bin/java 的符号链接。

    在 JavaVirtualMachines 目录下,我有两个文件夹:

    • 1.6.0.jdk
    • jdk1.8.0_25.jdk

    所以我确实安装了 Java 6!尽管 /usr/bin/java 指向 Java 8 的目录,并且我的终端中的版本是 Java 8,但当我尝试运行 maven 时,它使用的是 Java 6 安装!

    为了解决这个问题,我需要设置我的 JAVA_HOME 环境变量并将其添加到我的 PATH 中。在我这样做之前,在终端中输入echo $JAVA_HOME 时,我什么也没得到。

    我在我的主目录中创建了一个名为 .bash_profile 的文件(因为我还没有)。然后我将以下内容放入其中:

      export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
      export MAVEN_HOME=/Applications/apache-maven-3.3.9
      export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin
    

    我重新启动终端,导航到我的项目,输入mvn spring-boot:run,它就像一个魅力!

    【讨论】:

    • 如果您将export JAVA_HOME=$(/usr/libexec/java_home) 添加到您的.profile,那么您将始终将JAVA_HOME 设置为当前版本。 /usr/libexec/java_home -h显示更多信息
    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多