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

Posted

技术标签:

【中文标题】编译致命错误:目标版本无效:1.8 -> [帮助 1]【英文标题】:Fatal error compiling: invalid target release: 1.8 -> [Help 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 【参考方案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.8)

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

    使用 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:

    首选项 构建、执行、部署 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 版本上。我这样做是希望它能奏效。

以上是关于编译致命错误:目标版本无效:1.8 -> [帮助 1]的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Maven 未使用 Java 11 - 编译致命错误:目标版本无效:11

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

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

测试编译给出“无效的目标版本:1.8”