致命错误编译:无效的目标版本: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

IntelliJ:致命错误编译:无效的目标版本:1.8

编译致命错误:目标版本无效:12 -> [帮助 1]

编译致命错误:目标版本无效:1.8 -> [帮助 1]

为啥当我尝试将我的 Spring Boot 应用程序推送到 heroku 时它返回“致命错误编译:无效目标版本:11”

vc++编译错误RC:致命错误RC1107:无效使用;使用 RC /?为了