解决maven maven.compiler.source和maven.compiler.target的坑

目录
  • maven maven.compiler.source和maven.compiler.target的坑
    • 看了下,IDE配置的JDK
    • 自动build之后,的确是jdk 1.7
    • 换成J2SE-1.8
    • 换成1.6
    • 如果要强制jdk版本
  • maven编译报错java: -source,pom设置maven.compiler.source原理

maven maven.compiler.source和maven.compiler.target的坑

最近建议产品组把jdk 1.7升级到1.8,昨晚开发报了个问题过来,说maven.compiler.source和maven.compiler.target改成1.8之后,编译出来的代码还是1.7,如下:

也可通过javap -v ServiceImpl.class 查看class文件的java编译版本号。

下午抽空看了下,果不其然,第一怀疑就是maven.compiler.source和maven.compiler.target这两参数不靠谱。

看了下,IDE配置的JDK

如下:

自动build之后,的确是jdk 1.7

如下:

换成J2SE-1.8

换成1.6

查询maven官方文档,可知maven.compiler.source和maven.compiler.target仅仅是推荐,不是强制。

如果要强制jdk版本

可指定executable属性来保证,如下:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable><!-- path-to-javac --></executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

问题解决。

maven编译报错java: -source,pom设置maven.compiler.source原理

我们编译的插件Maven compiler Plugin就是用来编译代码的,以前刚学java的时候,使用javac 命令编译.java文件为.class文件.

而设置

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

就是指定javac-source与target选项的,官网

有时候,maven编译报错java: -source 1.5 中不支持 diamond 运算符就是因为没有指定编译版本.指定版本即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Maven之pom.xml文件中的Build配置解析

    目录 前言 正文 mave的相关插件 pom.xml中的build标签 1. pom.xml中的两种build 2. Profile Build和Project Build的共有元素 3. Project Build特有的<-Directory> 4. Project Build特有的 Maven常用配置 pom.xml基础配置 插件配置 编译插件 测试插件 测试报告插件 eclipse插件 war包插件 tomcat插件 插件命令 总结 前言 在日常的开发中,我们经常使用maven来管理和构

  • Java修改maven的默认jdk版本为1.7的方法

    问题: 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2.每次右键项目名-maven->update project 时候,项目jdk版本变了,变回1.5版本或者其他版本 解决办法: 解决办法一:在项目中的pom.xml指定jdk版本,如下: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <ar

  • 基于Maven pom文件中属性变量总结

    目录 Maven pom文件属性变量总结 1.内置属性 2.POM属性 3.自定义属性 Maven pom变量定义 定义变量并赋值 Maven pom文件属性变量总结 1.内置属性 ${basedir}表示当前项目根目录 ${version}表示当前项目版本 2.POM属性 ${project.artifactId} 等价于元素的值 个人理解,本质上每个标签底层是通过对象的引用实现,也同样存在继承特性(仅仅是个人理解,供参考). 以此类推,可以发现很多这一类的属性定义. 类似地 ${projec

  • 聊聊maven与jdk版本对应关系

    目录 maven与jdk版本对应关系 解决方式(windows) maven和java的jdk版本不同 怎么改成一样的呢? maven与jdk版本对应关系 很多搬砖的小伙伴在使用maven项目打包的时候,都会遇到下面的编译问题: Caused by: java.lang.UnsupportedClassVersionError: org/apache/maven/plugin/compiler/CompilerMojo : Unsupported major.minor version 51.0

  • 如何改变idea和maven中的sdk版本

    改变idea和maven中的sdk版本 改的目的:switch()的参数不能传string类型等,jdk高版本才有的特性版本 改变的步骤,以1.5>1.8为例: 1.idea改版本 2.maven改版本 2.在setting.xml中的profiles标签内加入下面这些 <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault>

  • 解决maven maven.compiler.source和maven.compiler.target的坑

    目录 maven maven.compiler.source和maven.compiler.target的坑 看了下,IDE配置的JDK 自动build之后,的确是jdk 1.7 换成J2SE-1.8 换成1.6 如果要强制jdk版本 maven编译报错java: -source,pom设置maven.compiler.source原理 maven maven.compiler.source和maven.compiler.target的坑 最近建议产品组把jdk 1.7升级到1.8,昨晚开发报了

  • idea中解决maven包冲突的问题(maven helper)

    日常开发中经常会遇到xxx.class 找不到的异常,但是这个类确实存在我们的项目中,就会感觉很离奇,其实这就是包冲突的问题 冲突问题 比如项目中引用了两个 fastjson.jar的版本,分别为 fastjson:1.2.28 fastjson:1.2.3 我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2.3版本去掉了这个类,然而我们项目中maven 却把1.2.3的 jar 打包进去了,那我们就会报异常,不存在这个 class,但是我们调错误的时候却发现这个类存在,那我们

  • IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更新、自动更新快捷键)

    新版的IDEA为了防止 pom 更新时,MAVEN 自动导包时卡死的问题,取消了自动导包机制.但新增了导入按钮和快捷键. 问题 idea 升级到 2020.x 版后,变更 MAVEN 不会自动更新依赖.也没有设置选项. 解决 通用方案 当我们修改了 maven 依赖以后,当前 pom 文件的右上角会出现一个 maven 的小图标,点一下就可以更新依赖了. 快捷键方案 将鼠标放到 maven 图标上后,会出现快捷键提示. MAC Shift + Command + O Windows:Ctrl +

  • maven基础教程——简单了解maven的特点与功能

    Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤. Maven 是一个项目管理工具,可以对 Java 项目进行构建.依赖管理. Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目.Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立

  • 常用Maven库,镜像库及maven/gradle配置(小结)

    平时用到的库 仓库名 地址 备注 mavenCentral https://repo1.maven.org/maven2/ https://repo.maven.apache.org/maven2/ 全区最大的maven库,第二个为apache的镜像库, gradle默认地址 jcenter https://jcenter.bintray.com/anverus/tools/ bintray私有库 兼容mavenCentral中心仓库,且性能更优 google https://dl.google

  • 带你走进Maven的大门-最全Maven配置及集成idea工具总结

    一.材料准备 1.jdk1.8的安装包 2.maven安装包 3.idea工具 二.配置jdk1.8环境变量 1.jdk下载 jdk下载网址(点击此链接即可跳转到jdk1.8下载页面) 2.开始配置jdk环境变量 ①复制jdk安装目录 我的jdk安装路径在C:\Program Files\Java\jdk1.8.0_221 ②点击此电脑–>点击属性–>点击高级系统配置–>点击环境变量 ③在变量中新建系统变量 JAVA_HOME 并将其添加至系统变量的path路径下 三.maven环境配置

  • IDEA2022.1创建maven项目规避idea2022新建maven项目卡死无反应问题

    idea 2022的新建项目和旧的不一样选择maven archetype输入name: (项目名称)location: (项目文件路径)jdk:1.8catalog:(目录),选择internal 选择 org.apache.maven.archetypes:maven-archetype-webapp即maven的webapp项目模板 advance Setting输入自己的groupid和artifactIdversion 建好后效果 过程发生异常问题规避:** idea2022新建mav

  • 解决Antd Table表头加Icon和气泡提示的坑

    对于Antd Table组件的columns数组来说,它需要接受2个属性(filterDropdown,filterIcon)才能在表头某个属性旁展示图标Icon: columns: [{ title: '表达式', dataIndex: 'formulaTenderAmount', key: 'formulaTenderAmount', width: 150, placeholder: '请输入表达式', filterDropdown: (<div></div>), filter

  • 解决@RequestMapping和@FeignClient放在同一个接口上遇到的坑

    目录 @RequestMapping和@FeignClient放同一个接口的坑 原因 解决方法 FeignClient上的RequestMapping不能生效 问题 原因 解决过程 结果 @RequestMapping和@FeignClient放同一个接口的坑 @RequestMapping("/user/admin") @FeignClient(ServiceNameConstants.USER_ADMIN_SERVICE) public interface IUserAdminAu

  • 解决MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause

    目录 前言 示例一 示例二 示例三 示例四 需要注意的地方 总结 前言 首先明确一点这个错误只会发生在delete语句或者update语句,拿update来举例 : update A表 set A列 = (select B列 from A表): 这种写法就会报这个错误,原因:你又要修改A表,然后又要从A表查数据,而且还是同层级.Mysql就会认为是语法错误! 嵌套一层就可以解决,update A表 set A列 = (select a.B列 from (select * from A表) a);

随机推荐