【问题标题】:Fatal error compiling: invalid target release: 1.8 -> [Help 1]编译致命错误:目标版本无效:1.8 -> [帮助 1]
【发布时间】:2015-04-02 05:20:32
【问题描述】:

类似于invalid target release: 1.7 上发布的问题,但在关注博客后,我的问题仍未解决。

未能在项目 hm_app 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile): Fatal error compile: invalid target release: 1.8 -> [Help 1]

当我遇到这个问题时,我正在关注as tutorial

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

输出

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

【问题讨论】:

  • ...您确定在某处安装了 Java 8?
  • 我有 x86、64 java 7 和没有 java 8
  • 好的。那么你为什么要在没有 Java 8 编译器的情况下编译 Java 8 代码呢?
  • @Makoto ty 调查我安装 java 8 的问题解决了它.... ty man :)
  • @Makoto 最后我明白了你在说什么“好吧。那么你为什么要在没有 Java 8 编译器的情况下编译 Java 8 代码?”所以我只是将我的 pom.xml 文件 java.version>1.8 更改为 java.version>1.7 我也可以在 java7 上使用 mvn compile

标签: java maven


【解决方案1】:

您已将 %JAVA_HOME 设置为 jdk 1.7,但您正在尝试使用 1.8 进行编译。安装 jdk 1.8 并确保您的 %JAVA_HOME 指向它或将目标版本删除到 1.7。

目标版本无效:1.8

目标版本指的是jdk版本。

【讨论】:

  • 在我的情况下,另一种可能的解决方案是将 pom.xml 文件 java.version>1.8 编辑为 java.version>1.7
  • 这就是 maven 专门寻找 java 版本的地方。因此,您有效地将 java 版本更改为您在 %JAVA_HOME 上安装的版本。
  • 在我的 Mac 上,我确实 export JAVA_HOME=/usr/libexec/java_home -v 1.8 将 JAVA_HOME 设置为 1.8 JDK 的正确位置。提供您最喜欢的版本来代替 1.8。 (= 和 8 之后有反引号)。
  • 是的,你明白了。昨天我将其更改为编译另一个仅支持 1.7 的遗留程序:D 谢谢!
【解决方案2】:

将值放入插件中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

错误被使用:

<source>${java.version}</source>
<target>${java.version}</target>

【讨论】:

  • 就我而言,解决方案是将源和目标都设置为 1.7
  • 我可以在什么文件中找到这个?
  • @YusrilMaulidanRaji pom.xml
【解决方案3】:

在我的情况下,maven“运行配置”使用了错误的 JRE (1.7)。一定要检查 Run -> Run Configurations -> (Tab) JRE 是一些 jdk1.8.x。

【讨论】:

  • 是的,所以下次如果出现此错误,我们有以下事项要检查:JAVA_HOME、BUILD_Configuration、RUN_Configuration
【解决方案4】:

问题已解决,因为我的 JDK 指向 1.7,而 JRE 指向 1.8。通过键入检查命令提示符

java -version

javac -version

两者应该相同。

【讨论】:

    【解决方案5】:

    对于 eclipse,这是我解决问题的方法:

    1. 首选项 --> 编译器 --> 编译器投诉级别(更改为 1.8)

    2. 参数 --> 已安装的 JRE --> 选择 JAVA SE 8 1.8

    3. 使用 Run as maven build 通过 maven 重建。

    它不应再向您显示无效目标错误。
    注意:我不必在终端中设置或更改任何其他变量。 希望这会有所帮助。

    【讨论】:

      【解决方案6】:

      将其放入您的 .profile 将动态处理您的 $JAVA_HOME

      export JAVA_HOME=$(/usr/libexec/java_home)
      

      之后关闭你的shell,打开一个新的并测试

      echo $JAVA_HOME
      

      它应该显示类似

      /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
      

      如果不是,请删除启动脚本中对 JAVA_HOME 的任何其他分配。请记住,这些启动脚本以. 开头,因此它们是隐藏的,并且在使用* 通配符时不会被包含在内,例如如果要 grep 主目录的所有文件,则需要:

      grep -s JAVA_HOME ~/.* --exclude=.bash_history
      

      【讨论】:

        【解决方案7】:

        我在 Dokku 上部署时遇到了这个问题,由于某种原因它选择了 JDK 1.7

        创建system.properties 文件并设置java.runtime.version=1.8 解决了这个问题。 Dokku 现在使用 Java 版本 8。 Choosing a JDK on Heroku

        我以前从来没有这样做过......

        【讨论】:

        • 提示仍然有效。为了将 Dokku 中的 Java 版本更改为 11,我不得不进行大量搜索。非常感谢。
        • 你成就了我的一天!谢谢你的回答。
        【解决方案8】:

        当我尝试将我的 Spring Boot 项目部署到 Heroku 时,我遇到了类似的问题,尽管我的问题是 invalid target release: 11。 我通过添加一个新文件system.properties 解决了这个问题,添加到文件中的内容是java.runtime.version=11(对我来说我使用的是JDK 11)。

        【讨论】:

          【解决方案9】:

          我面临的问题是我能够从命令提示符而不是 Eclipse 进行 Maven 构建。在 Eclipse 中对我有用的是我将运行配置更改为指向 JDK 内的 JRE 文件夹,而不是仅按照标准将其保留在 JDK 文件夹中。此解决方案也可能适用于您,但当且仅当所有 java 路径都正确时,请尝试此方法,java 和 javac 显示的版本与 pom.xml 的目标中存在的版本相同.

          【讨论】:

          • 这是我的问题和解决方案。
          【解决方案10】:

          在 Windows 机器上,您可以临时设置 Java 版本。
          例如,要将版本更改为 Java 8,请在 cmd 上运行此命令:

          set JAVA_HOME=C:\\...\jdk1.8.0_65
          

          【讨论】:

            【解决方案11】:

            正如 Camila Macedo 所提到的 - 您必须明确指出编译器插件的 java 版本。对于spring boot,您可以通过下一个属性来做到这一点:

              <properties>
                <java.version>1.8</java.version>
                <maven.compiler.release>8</maven.compiler.release>
              </properties>
            

            【讨论】:

            • 是的,设置 maven.compiler.release 在我的 Maven 项目中修复了它。
            【解决方案12】:

            使用 IntelliJ,我只需要安装另一个(更高的)JDK 版本。重启IDE后,一切正常,甚至所有依赖都解决了。

            【讨论】:

            • 重启 intelliJ 对我来说是关键。我更新了 JAVA_HOME 的环境变量以指向不同的 java 版本,但似乎系统变量在现有的 CMD 会话中没有刷新。可能只创建新的终端会话就足够了。
            【解决方案13】:

            这个问题并没有明确询问 Docker,但是当我有一个针对 1.9 的 pom.xml 文件时,我收到了同样的错误......

            <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <maven.compiler.source>1.9</maven.compiler.source>
              <maven.compiler.target>1.9</maven.compiler.target>
            </properties>
            

            ... 但随后尝试通过自行指定“maven”来针对 Docker 容器运行测试。

            docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test
            

            对我来说,解决方法是针对我需要的确切版本。

            docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test
            

            (你可以learn more here。)

            【讨论】:

              【解决方案14】:

              执行强制 Maven 更新,这将带来兼容的 1.8 Jar 版本,然后在构建时,将执行环境中的 JRE 版本从运行配置更新为 1.8,然后点击运行

              【讨论】:

                【解决方案15】:

                如果您使用的是 Eclipse IDE,请进入 Window 菜单并选择首选项,然后搜索已安装的 JRE 并选择构建项目所需的 JRE

                【讨论】:

                  【解决方案16】:

                  在我的情况下(IntelliJ),我需要检查我是否有 正确的 Runner 用于 maven:

                  1. 首选项
                  2. 构建、执行、部署
                  3. Maven -> 跑步者

                  【讨论】:

                    【解决方案17】:

                    NETBEANS 错误: 无法在项目 doit 上执行目标 org.apache.maven.pluginsmaven-compiler-plugin3.1compile (default-compile) 编译无效目标版本 11 的致命错误 - [帮助 1]

                    我是如何解决我的问题的: .右键单击项目。 .转到属性。 .单击源。 .转到源/二进制格式并更改为最新版本

                    就我而言 (1.8)

                    【讨论】:

                      【解决方案18】:

                      首先,如果你使用的是eclipse,请检查Build Path -> Configure Build Path -> Java Build Path,看看你的项目使用的是哪个java版本。我推荐使用 Java 1.8。 其次,检查 pom.xml 文件。 ctrl + F 搜索文本“java.version” => 将其更改为 1.8。 第三次安装 Java 1.8,然后将您的 JAVE_HOME 路径更改为指向 Java 1.8 文件夹。

                      【讨论】:

                        【解决方案19】:

                        在我的情况下起作用的是:

                        我打开pom.xml,更换了如下插件之一。

                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>3.2</version>
                            <configuration>
                                <source>1.7</source>
                                <target>1.7</target>
                            </configuration>
                        </plugin>
                        

                        在我编辑源标签和目标标签之前都有1.8,我将其更改为1.7,它工作了。

                        【讨论】:

                        • 你了解你所做的改变还是只是希望最好的改变?
                        • 两者。我了解该项目现在运行在 Java 1.7 版本上。我这样做是希望它能奏效。
                        猜你喜欢
                        • 2021-04-10
                        • 2015-06-14
                        • 2019-03-02
                        • 2015-10-14
                        • 2017-10-29
                        • 2020-01-12
                        • 2018-08-03
                        • 2015-06-01
                        • 2022-09-26
                        相关资源
                        最近更新 更多