如何修复无效的目标版本:Maven Build中的1.7、1.8、1.9或1.10错误

如果您正在使用Maven构建Java项目,可能是在Eclipse中,或者是通过运行mvn install在命令提示符下构建的,并且构建失败并显示诸如“无效的目标发行版:1.7”“无效的目标发行版:1.8”之类的错误,那么您来了到正确的地方。 在本文中,我将向您显示发生此错误的原因,以及即使在您的计算机上安装了更高的Java版本(如Java 9、10,或者可能在下个月使用Java 11)也可以处理这些错误。 问题的根本原因是,您在pom.xml文件中为Maven编译器插件指定了更高的Java版本 ,而不是Maven在系统中所知道的,因此这就是说无效的目标发行版的原因。

一个简单的解决方案是在pom.xml中减少目标版本,或者如果要在更高版本中构建项目,则安装新的Java版本。

但是,解决此问题的关键是要知道Maven从JAVA_HOME变量而不是从PATH环境变量中选择Java版本。

这意味着即使您已经安装了JDK 8,但是如果您的JAVA_HOME仍在引用JDK 1.7,那么您将收到此错误。

幸运的是,您可以发现,我的意思是您的Maven使用的是哪个Java版本。 只需从命令提示符处运行mvn -version命令,它将打印JAVA_HOME变量的值并确认它正在使用哪个版本的JDK来构建您的项目。

最近,当我遇到此错误时,我正在旧计算机上使用Maven构建Java项目。 我以为自己拥有最新的Java版本,这就是为什么我对此错误感到惊讶。

这是我的Maven pom.xml的样子:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

这是mvn -version的示例输出:

$ mvn -version
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00
Maven home: C:\apache-maven-3.2.3
Java version: 1.6.0_37, vendor: Sun Microsystems Inc.
Java home: C:\jdk1.6.0_37\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

您可以看到我的机器中的Maven使用的是JDK 1.6.0_37 ,这就是为什么当我以JDK 1.7作为目标构建Maven项目时它失败了的原因。

一旦我将pom.xml更新为使用目标1.6,该构建即开始工作。

因为我的项目不需要Java 7,所以只需更改Maven编译插件,如下所示:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

但是,如果必须使用JDK 1.7来构建Java项目,则只需安装并更新JAVA_HOME变量,该错误就会消失。

此解决方案非常好,因为您可以立即解决问题。

Maven构建

如果您的Maven编译器插件具有<target> 1.8 </,则会出现此错误
目标>,但是您计算机中的JAVA_HOME变量所引用的Java版本低于JDK 1.8,例如JDK 1.6或JDK 1.7。

Maven文件最初可能看起来像:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

为了解决此错误,请更改目标以使其与Java版本匹配,以引用您的JAVA_HOME变量,或者安装新的JDK并更新JAVA_HOME变量。

如果您不知道,请参见本文,以查找在Windows和Linux中更改JAVA_HOME环境变量的值的确切步骤。

顺便说一句,如果您在受限的环境中工作,例如在一家大型公司中,该公司会自动部署软件,并且无法添加或编辑环境变量,那么您仍然可以在本地外壳程序中更改它们,如我之前的文章如何设置Windows中Maven的特定Java版本 。

Maven构建

如果您的maven编译器插件具有<target> 1.9 </ target>,但是计算机中的JAVA_HOME变量引用的Java版本低于JDK 1.9,例如JDK 1.8或JDK 1.7,则会出现此错误。

如上一节所述,将目标更改为pom.xml或安装新的JDK并更新JAVA_HOME环境变量以指出新的JDK bin目录。

由于Maven使用JAVA_HOME,因此即使您安装了正确的Java版本,也无法解决该问题,除非您更新此环境变量。

同样,如果使用进行编译,则将获得无效的目标版本:1.10
<target> 1.10 </ target>,并且您的JAVA_HOME是指JDK 9或JDK 8。

现在,您可以泛化此问题并根据您在pom.xml中指定的Java版本以及计算机上安装的Java版本以及JAVA_HOME环境变量引用的Java版本进行解决。

您可能喜欢的其他Maven文章

  • Maven,ANT和Jenkins有什么区别? ( 回答 )
  • 如何增加Maven的堆大小? ( 步骤 )
  • 如何解决Maven Eclipse Dependency搜索不起作用的问题? ( 解决方案 )
  • 如何在Windows 10中安装Maven? ( 步骤 )
  • 如何使用ANT构建Java项目? ( 文章 )
  • 如何在ANT中创建或修改build.xm? ( 教程 )
  • 前5位免费的Apache Maven书籍( 书籍 )
  • 关于Maven Java Developer的10点要知道的( maven )
  • 每个Java开发人员都应该知道的10个Maven插件( 插件 )
  • 6个Java开发人员免费的Maven和Jenkins课程( 课程 )
  • 如何为Maven设置特定的Java版本( 教程 )

感谢您到目前为止阅读本文。 如果您按照这些提示设法解决了问题,请与您的朋友和同事分享。 如果您仍然遇到问题,请留下注释,我们也许可以一起解决您的问题。

翻译自: https://www.javacodegeeks.com/2018/12/fix-invalid-target-release-error-maven.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux查看时间段文件,Linux查看特定时间段内修改过的文件

一.Linux系统日志的一些信息&#xff0c;日志配置文件syslog.conf系统日志一般都存在/var/log下常用的系统日志如下:核心启动日志:/var/log/dmesg系统报错日志:/var/log/messages邮件系统日志:/var/log/maillogFTP系统日志:/var/log/xferlog安全信息和系统登录与网络连接的信息…

使用ClickHouse UDF与OpenAI模型集成

本文字数&#xff1a;14683&#xff1b;估计阅读时间&#xff1a;37 分钟 作者&#xff1a;Dale McDiarmid 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 Meetup活动 ClickHouse Shenzhen User Group第1届 Meetup 火热报名中&#x…

使用Spring Boot和Vue.js构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 在本教程中&#xff0c;您将使用Vue.js作为客户端并将Spring Boot作为资源服务器来构…

linux安装 icc编译器,安装 Intel Compiler (ifort icc icpc)

在下载目录下解压heqinheqin-dell:~/Downloads$ tar zxvf parallel_studio_xe_2017_update7.tgz进入解压后的文件夹heqinheqin-dell:~/Downloads$ cd parallel_studio_xe_2017_update7/为了记录过程而不用截图&#xff0c;我选择用命令行安装&#xff0c;当然你也可以用install…

linux 安装mongodb 64,在CentOS 6.x 64bit上安装MongoDB 3.2社区版

基本安装步骤参考: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/1) 创建repo源文件:sudo vim /etc/yum.repos.d/mongodb-org-3.2.repo内容如下:[mongodb-org-3.2]nameMongoDB Repositorybaseurlhttps://repo.mongodb.org/yum/redhat/$releasever/mon…

[免费网络研讨会] Java 11的第一印象

一年多以前&#xff0c;我们正焦急地等待新的模块化Java 9的到来。大约在同一时间&#xff0c;引入了一个新的发布周期&#xff0c;该周期将每6个月发布一次新版本&#xff0c;并提供长期支持&#xff08;LTS&#xff09;。每3年发行一次&#xff08;或每6个版本发行一次&#…

linux可以http安装么,Linux 5下 http的安装

Web网站服务(一)http.conf中的全局配置ServerRoot&#xff1a;用于设置httpd服务的根目录&#xff0c;该目录中包括运行Web站点必须的目录和文件。默认根目录为&#xff1a;/usr/local/apache2Listen&#xff1a;用于设置Apache服务器监听的网络端口号&#xff0c;默认为80User…

APIGEE – API网关简介

在本文中&#xff0c;我想简要介绍一下APIGEE。 APIGEE主要提供现成的以下功能作为api网关。 协议转换 与任何协议进行转换&#xff0c;包括SOAP&#xff0c;REST&#xff0c;XML二进制或自定义 交通管理 开箱即用的灵活&#xff0c;分布式配额管理&#xff0c;速率限制和峰…

内存泄漏分析_调查内存泄漏第2部分–分析问题

内存泄漏分析这个小型系列的第一个博客介绍了如何创建一个非常泄漏的示例应用程序&#xff0c;以便我们可以研究解决服务器应用程序上基于堆的问题的技术。 它展示了Producer-Consumer模式的一个大问题&#xff0c;即消费者代码必须能够至少与生产者一样快&#xff08;甚至不是…

将Java Flight Recorder与OpenJDK 11结合使用

Java Flight Recorder&#xff08;JFR&#xff09;曾经是Oracle JDK的商业附加组件。 由于它是与Java Mission Control一起最近开源的&#xff0c;因此使用OpenJDK 11的每个人现在都可以使用此出色的工具免费对Java应用程序进行故障排除。 JFR以前是专有解决方案&#xff0c;对…

c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门

来自&#xff1a; 51CTO GCC使用入门通常所说的GCC是GUN Compiler Collection的简称&#xff0c;除了编译程序之外&#xff0c;它还含其他相关工具&#xff0c;所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编…

无服务器安全性:将其置于自动驾驶仪上

Ack &#xff1a;本文是从个人经验以及从无服务器安全性的其他多个来源学到的东西的混合。 我无法在这里列出或确认所有这些信息&#xff1b; 但是&#xff0c;应该特别感谢The Register &#xff0c; Hacker Noon &#xff0c; PureSec以及Serverless Status和Serverless&…

c语言构造报文,构造一个缓冲区溢出的C语言的例子

满意答案wk05122013.06.01采纳率&#xff1a;45% 等级&#xff1a;12已帮助&#xff1a;15719人#include #include #include void function(char *str){char buffer[16];strcpy(buffer, str);}void evilfunc(){printf("Am I Evil?\n");}int main(int argc, char*…

mongodb插入速度每秒_MongoDB事实:商品硬件上每秒插入80000次以上

mongodb插入速度每秒在尝试一些时间序列集合时&#xff0c;我需要一个大型数据集来检查我们的聚合查询在增加数据负载的情况下不会成为瓶颈。 我们解决了5000万份文档&#xff0c;因为超出此数目我们仍然会考虑分片。 每次事件如下所示&#xff1a; {"_id" : Objec…

parallels for linux,在 Parallels Desktop 上安装 Remix OS PC

前言个人觉得呢&#xff0c;像 Remix OS 和 Phoenix OS 这样的国产安卓桌面操作系统还是很划时代的。赋予了安卓平台多任务操作的能力&#xff0c;这可以给二合一设备的体验带来一定的变化&#xff0c;但是不像 Surface 一样后面有巨硬给撑腰可以做大做强起来&#xff0c;但是这…

模拟用户输入并检查输出的简单方法

最近&#xff0c;我的一些学生向我询问了赫尔辛基大学MOOC提供的单元测试的机制&#xff0c;我检查了它们的实现&#xff0c;并认为这对于初学者了解实际发生的情况是有帮助的&#xff0c;因此在此发表了这篇小文章。 我们将以“机场”项目为例&#xff0c;这是OOP2第一周的最…

android bench内存测试,华为p10内存测试软件(androbench) v5.0.1 免费版

华为p10内存测试软件(androbench)其实是androbench这款内存测试软件&#xff0c;可以用于测试你的华为p10&#xff0c;是一款不错的华为p10内存测试软件&#xff0c;可以测试你的手机闪存性能&#xff0c;其他的手机也可以免费测试哦。华为p10内存测试软件介绍AndroBench是衡量…

android对话框字体大小,Android Dialog 设置字体大小的具体方法

先看下面图片&#xff1a;这是我在做登录页面的时候&#xff0c;调用系统的progressdialog 进行等待&#xff0c;可是看起来很不协调&#xff0c;左边的等待图片过大&#xff0c;右边文字过小&#xff0c;看起来老别扭&#xff0c;虽然功能上不存在什么问题&#xff0c;但是我有…

android custom toast,Android自定义Toast

核心代码&#xff1a;package com.huatec.myapplication;import android.content.Context;import android.graphics.Bitmap;import android.support.annotation.ColorInt;import android.support.annotation.DrawableRes;import android.view.Gravity;import android.view.Layo…

华为android打开usb调试模式,华为 PE-CL00 开启USB调试模式

我们要将华为 PE-CL00与电脑进行连接&#xff0c;就必须要打开华为 PE-CL00系统的调试模式&#xff0c;不同的系统版本打开调试模式的方法有所不同&#xff0c;在这里我们就谈谈华为 PE-CL00各种系统版本打开USB调试模式的方法。1、针对Android 2.1-2.2版本的系统&#xff1a;我…