一、mvn命令指定jdk版本编译

1.1 修改mvn.cmd

其实还可以更改maven的 setting.xml 文件,但是觉得太复杂了,还是修改 mvn.cmd 来得快

以Windows为例,找到maven安装目录,编辑 bin\mvn.cmd

在文件开头加入 set JAVA_HOME= 路径中有空格也无须用引号

随后命令行运行 mvn -v 即可查看 Java version

不对的话就重启cmd窗口

使用maven编译文件时要注意 pom.xml 文件中有没有指定java版本

如:

1.81.8UTF-8

有的话需要修改一下,否则会报错:Fatal error compiling: 无效的目标发行版

上述配置只能是建议使用某个版本进行编译,编译时校验一下jdk版本是否正确

毕竟单单这一个配置,程序根本不知道你jdk路径在哪

想要完全通过 pom.xml 文件配置指定编译时的jdk版本,可以使用 maven-compiler-plugin(不推荐)



1.2 maven-compiler-plugin

配置详解如下

org.apache.maven.pluginsmaven-compiler-plugin3.8.11.81.8UTF-8truetruetruetrue${JAVA_1_4_HOME}/bin/javac-->1.3128m512m-verbose -bootclasspath ${java.home}\lib\rt.jar// 原文链接:https://blog.csdn.net/liupeifeng3514/article/details/80236077

简化如下:

org.apache.maven.pluginsmaven-compiler-plugin3.8.11.81.8UTF-8

executable可以指定javac路径,但是个人觉得这样不好,毕竟分享你项目时,还要让别人改配置



二、查看class文件、jar包编译时的jdk版本

class文件:

You're looking for this on the command line (for a class called MyClass):

On Unix/Linux:

javap -verbose MyClass | grep "major"   // or -v

On Windows:

javap -verbose MyClass | findstr "major"

You want the major version from the results. Here are some example values:

Java 1.2 uses major version 46
Java 1.3 uses major version 47
Java 1.4 uses major version 48
Java 5 uses major version 49
Java 6 uses major version 50
Java 7 uses major version 51
Java 8 uses major version 52



jar包:

查看jar包中的 META-INF\MANIFEST.MF,Build-Jdk 属性就是JDK的版本

如果没有Build-Jdk属性,那就解压个class文件下来看吧