致命错误编译:无效的目标版本:9
Posted
技术标签:
【中文标题】致命错误编译:无效的目标版本:9【英文标题】:Fatal error compiling: invalid target release: 9 【发布时间】:2018-08-03 16:31:41 【问题描述】:我使用 Eclipse 中的 Spring Dashboard 创建项目。我也尝试使用 Spring Initializr 创建它,并尝试了 Java 的 8 和 9 版本,但我仍然得到这个。还尝试更改 Maven 目标。运行配置,maven build使用的是JavaSE1.8,jre 1.8.0。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RC2</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>9</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
命令:
javac version: 9.0.4
Apache Maven 3.5.2
Maven home: C:\Users\arito\Desktop\apache-maven-3.5.2\bin\..
Java version: 1.8.0_152, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_152\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
【问题讨论】:
您必须将 JAVA_HOME 指向 JDK 9,但似乎它指向 jdk 1.8: Java home: C:\Program Files\Java\jdk1.8.0_152\jre - 是在“mvn -v”输出? 是的,我已经做到了。错误消失了。现在我得到 [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.0.RC2:run (default-cli) on project spring5-recipe-assigment-master: An运行时发生异常。 null:InvocationTargetException:在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定义名称为“entityManagerFactory”的bean创建错误:调用init方法失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException: javax.xml.bind.JAXBException 这是一个依赖/java 9 模块问题,使用搜索可以回答;)看看这个:***.com/questions/43574426/… 对我来说,将 java-version 更改为 8 有效,它在错误中说是 9 【参考方案1】:致命错误编译:无效的目标版本:9(与您的相同)所以我更改了红色突出显示的字段in pom.xml of eclipse
【讨论】:
请不要使用图像来描述可以用文字表示的内容。【参考方案2】:我使用以下配置解决了这个问题:
<build>
<plugins>
<!-- target Java 9 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- fork compilation and use the
specified executable -->
<fork>true</fork>
<executable>javac9</executable>
</configuration>
</plugin>
</plugins>
</build>
还有其他选择,例如 Maven Toolchains 或 mavenrc 文件。
【讨论】:
【参考方案3】:当我使用 Java 8 而不是 Java 11 时发生了这种情况,所以我安装了 Java 11 并且错误消失了。
【讨论】:
【参考方案4】:我不得不使用 java 9 而不是 8。
我在 MacOS 中切换了 java 环境:
列出已安装的 java 版本:/usr/libexec/java_home -V
切换到 java 9:export JAVA_HOME=`/usr/libexec/java_home -v 9.0.4`
(我之前安装了 java 9)
来源:How to set JAVA_HOME environment variable on Mac OS X 10.9?
【讨论】:
以上是关于致命错误编译:无效的目标版本:9的主要内容,如果未能解决你的问题,请参考以下文章
Maven 未使用 Java 11 - 编译致命错误:目标版本无效:11