致命错误编译:无效的目标释放:1.8 ->[帮助1]

类似的问题,就像无效的目标版本:1.7上发布的一样,但在关注博客后,我的问题仍然没有解决。

在项目hm_app上执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile)失败

当我遇到这个问题时,我正在遵循作为教程

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
331956 次浏览

您已经将%JAVA_HOME设置为jdk 1.7,但您正在尝试使用1.8编译。安装jdk 1.8并确保你的%JAVA_HOME指向它,或者将目标版本降至1.7。

无效的目标版本:1.8

目标版本指的是jdk版本。

把值放到插件中:

<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>

把它放在你的.profile中会动态地处理你的$JAVA_HOME

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

然后关闭您的shell,打开一个新的shell并使用

echo $JAVA_HOME

它应该显示如下内容

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

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

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

在我的案例中,专家“运行配置”使用了错误的JRE(1.7)。一定要检查执行->执行配置-> (Tab) JRE是否是某个jdk1.8.x。

当JDK指向1.7,JRE指向1.8时,这个问题得到了解决。在命令提示符中输入检查

java -version

而且

javac -version

两者应该相同。 < / p >

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

在我的案例中起作用的是:

我打开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,它工作了。

这个问题并没有明确地询问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

(你可以了解更多。)

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

  1. 首选项—>编译器—>编译器抱怨级别(更改为1.8) 李enter image description here < / p > < / >

  2. preferences——> Installed JREs——> select JAVA SE 8 李enter image description here < / p > < / >

  3. 通过maven使用作为maven构建运行来重建。

它不会再显示无效目标错误。< br > 注意:我不需要在终端中设置或更改任何其他变量。

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

创建system.properties文件并设置java.runtime.version=1.8解决了这个问题。Dokku现在使用Java版本8。 在Heroku上选择JDK < / p >

我以前从来没做过…

在Windows机器上可以临时设置Java版本 例如,将版本修改为Java 8,在cmd上运行以下命令:

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

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

如果您正在使用Eclipse IDE,则进入Window菜单并选择首选项,在那里搜索已安装的JRE并选择构建项目所需的JRE

正如Camila Macedo所提到的-你必须显式地为编译器-插件指定java版本。对于spring boot,你可以通过next属性来实现:

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

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

在我的例子中(IntelliJ),我需要检查maven是否有正确的奔跑者:

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

Preferences

我有类似的问题,当我试图部署我的春季引导项目到heroku,虽然我的问题是invalid target release: 11。 我通过添加一个新文件system.properties解决了这个问题,添加到文件中的内容是java.runtime.version=11(对我来说,我使用的是JDK 11)

< p > NETBEANS 错误: Failed to execute goal org.apache.maven. pluginsmevan -compiler-plugin3.1compile (default-compile) on project doit编译无效目标版本时出现致命错误

我如何解决我的问题: .右键单击项目。 .进入属性。 .点击Source。 .进入源代码/二进制格式,并更改为最新版本

在我的例子中(1.8)

首先,如果您正在使用eclipse,请检查Build Path >配置构建路径->Java生成路径,查看项目使用的Java版本。我建议使用Java 1.8。 其次,检查pom.xml文件。ctrl + F搜索文本"java.version"=比;将其改为1.8。 第三,安装Java 1.8,然后将JAVE_HOME路径改为指向Java 1.8文件夹

验证pom.xml中的jdk版本和环境变量是否相同。如果不一样的话。

在pom.xml ->

<properties>
<java.version>11</java.version>
</properties>

在环境变量-> JAVA_HOME = C:\Program Files\Java\ jdk-11.0.13