编译致命错误:目标版本无效:1.8 -> [帮助 1]
Fatal error compiling: invalid target release: 1.8 -> [Help 1]
与 invalid target release: 1.7 上发布的问题类似,但关注博客后我的问题仍未解决。
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project hm_app: Fatal error compiling: 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_HOME
设置为 jdk 1.7,但您正在尝试使用 1.8 进行编译。安装 jdk 1.8 并确保您的 %JAVA_HOME
指向它或将目标版本降低到 1.7。
invalid target release: 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,打开一个新的并使用
进行测试
echo $JAVA_HOME
它应该显示类似
的内容
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
如果不是,请删除启动脚本中 JAVA_HOME 的任何其他分配。请记住,这些启动脚本以 .
开头,因此它们是隐藏的,并且在使用 *
通配符时不会包含在内,例如如果你想grep你家目录下的所有文件,你需要:
grep -s JAVA_HOME ~/.* --exclude=.bash_history
在我的例子中,maven "Run configuration" 使用了错误的 JRE (1.7)。一定要检查 运行 -> 运行 配置 -> (Tab) JRE 是一些 jdk1.8.x.
问题已解决,因为我有一个指向 1.7 的 JDK 和指向 1.8 的 JRE。通过键入
检查命令提示符
java -version
和
javac -version
两者应该相同。
我面临的问题是我能够从命令提示符而不是从 Eclipse.What 进行 maven 构建,在 eclipse 中对我有用的是我将 运行 配置更改为指向到 JDK 内的 JRE 文件夹而不是仅根据 standard.This 解决方案将其留在 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
(你可以learn more here.)
对于 eclipse,这是我解决问题的方法:
Preferences --> Compiler --> Compiler Complainer Level (改为1.8)
首选项 --> 安装的 JRE --> select JAVA SE 8 1.8
使用 运行 作为 maven 构建通过 maven 重建。
它不应该再向您显示无效目标错误。
注意:我不必在终端中设置或更改任何其他变量。
希望这有帮助。
我在 Dokku 上部署时遇到了这个问题,出于某种原因它选择了 JDK 1.7
创建 system.properties
文件并设置 java.runtime.version=1.8
解决了问题。 Dokku 现在使用 Java 版本 8。
Choosing a JDK on Heroku
我以前从来没有这样做过...
在 Windows 机器上你可以临时设置 Java 版本。
例如,要将版本更改为 Java 8,运行 cmd
上的此命令:
set JAVA_HOME=C:\...\jdk1.8.0_65
执行强制 Maven 更新,这将带来兼容的 1.8 Jar 版本,然后在构建时,将执行环境中的 JRE 版本从 运行 配置更新为 1.8,然后点击 运行
如果您使用的是 Eclipse IDE,则进入 Window 菜单和 select 首选项,然后在其中搜索已安装的 JRE 和 select 您需要构建的 JRE项目
如 Camila Macedo 所述 - 您必须明确指出编译器插件的 java 版本。对于 spring 引导,您可以通过下一个 属性:
<properties>
<java.version>1.8</java.version>
<maven.compiler.release>8</maven.compiler.release>
</properties>
使用 IntelliJ 我只需要安装另一个(更高)JDK 版本。重新启动后IDE,一切正常,甚至所有的依赖关系都解决了。
就我而言 (IntelliJ),我需要检查我是否有 正确的 Runner for maven:
- 首选项
- 构建、执行、部署
- Maven -> 亚军
当我尝试将我的 spring 引导项目部署到 heroku 时,我遇到了类似的问题,尽管我的问题是 invalid target release: 11
。
我通过添加一个新文件 system.properties
解决了它,添加到文件的内容是 java.runtime.version=11
(对我来说,我使用 JDK 11)。
NETBEANS
错误:
无法在项目 doit 上执行目标 org.apache.maven.pluginsmaven-compiler-plugin3.1compile(默认编译)致命错误编译无效目标版本 11 - [帮助 1]
我是如何解决问题的:
.右键单击该项目。
.转到属性。
.单击来源。
.转到Source/Binary格式并更改为最新版本
以我为例 (1.8)
首先,如果你使用的是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 文件夹。
与 invalid target release: 1.7 上发布的问题类似,但关注博客后我的问题仍未解决。
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project hm_app: Fatal error compiling: 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_HOME
设置为 jdk 1.7,但您正在尝试使用 1.8 进行编译。安装 jdk 1.8 并确保您的 %JAVA_HOME
指向它或将目标版本降低到 1.7。
invalid target release: 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,打开一个新的并使用
进行测试echo $JAVA_HOME
它应该显示类似
的内容/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
如果不是,请删除启动脚本中 JAVA_HOME 的任何其他分配。请记住,这些启动脚本以 .
开头,因此它们是隐藏的,并且在使用 *
通配符时不会包含在内,例如如果你想grep你家目录下的所有文件,你需要:
grep -s JAVA_HOME ~/.* --exclude=.bash_history
在我的例子中,maven "Run configuration" 使用了错误的 JRE (1.7)。一定要检查 运行 -> 运行 配置 -> (Tab) JRE 是一些 jdk1.8.x.
问题已解决,因为我有一个指向 1.7 的 JDK 和指向 1.8 的 JRE。通过键入
检查命令提示符java -version
和
javac -version
两者应该相同。
我面临的问题是我能够从命令提示符而不是从 Eclipse.What 进行 maven 构建,在 eclipse 中对我有用的是我将 运行 配置更改为指向到 JDK 内的 JRE 文件夹而不是仅根据 standard.This 解决方案将其留在 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
(你可以learn more here.)
对于 eclipse,这是我解决问题的方法:
Preferences --> Compiler --> Compiler Complainer Level (改为1.8)
首选项 --> 安装的 JRE --> select JAVA SE 8 1.8
使用 运行 作为 maven 构建通过 maven 重建。
它不应该再向您显示无效目标错误。
注意:我不必在终端中设置或更改任何其他变量。
希望这有帮助。
我在 Dokku 上部署时遇到了这个问题,出于某种原因它选择了 JDK 1.7
创建 system.properties
文件并设置 java.runtime.version=1.8
解决了问题。 Dokku 现在使用 Java 版本 8。
Choosing a JDK on Heroku
我以前从来没有这样做过...
在 Windows 机器上你可以临时设置 Java 版本。
例如,要将版本更改为 Java 8,运行 cmd
上的此命令:
set JAVA_HOME=C:\...\jdk1.8.0_65
执行强制 Maven 更新,这将带来兼容的 1.8 Jar 版本,然后在构建时,将执行环境中的 JRE 版本从 运行 配置更新为 1.8,然后点击 运行
如果您使用的是 Eclipse IDE,则进入 Window 菜单和 select 首选项,然后在其中搜索已安装的 JRE 和 select 您需要构建的 JRE项目
如 Camila Macedo 所述 - 您必须明确指出编译器插件的 java 版本。对于 spring 引导,您可以通过下一个 属性:
<properties>
<java.version>1.8</java.version>
<maven.compiler.release>8</maven.compiler.release>
</properties>
使用 IntelliJ 我只需要安装另一个(更高)JDK 版本。重新启动后IDE,一切正常,甚至所有的依赖关系都解决了。
就我而言 (IntelliJ),我需要检查我是否有 正确的 Runner for maven:
- 首选项
- 构建、执行、部署
- Maven -> 亚军
当我尝试将我的 spring 引导项目部署到 heroku 时,我遇到了类似的问题,尽管我的问题是 invalid target release: 11
。
我通过添加一个新文件 system.properties
解决了它,添加到文件的内容是 java.runtime.version=11
(对我来说,我使用 JDK 11)。
NETBEANS 错误: 无法在项目 doit 上执行目标 org.apache.maven.pluginsmaven-compiler-plugin3.1compile(默认编译)致命错误编译无效目标版本 11 - [帮助 1]
我是如何解决问题的: .右键单击该项目。 .转到属性。 .单击来源。 .转到Source/Binary格式并更改为最新版本
以我为例 (1.8)
首先,如果你使用的是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 文件夹。