mvn命令指定jdk版本编译&查看class文件、jar包编译时的jdk版本
一、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版本
如:
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
有的话需要修改一下,否则会报错:Fatal error compiling: 无效的目标发行版
上述配置只能是建议使用某个版本进行编译,编译时校验一下jdk版本是否正确
毕竟单单这一个配置,程序根本不知道你jdk路径在哪
想要完全通过 pom.xml 文件配置指定编译时的jdk版本,可以使用 maven-compiler-plugin(不推荐)
1.2 maven-compiler-plugin
配置详解如下
<plugin> <!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 --> <source>1.8</source> <!-- 源代码使用的JDK版本 --> <target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --> <encoding>UTF-8</encoding><!-- 字符集编码 --> <skipTests>true</skipTests><!-- 跳过测试 --> <verbose>true</verbose> <showWarnings>true</showWarnings> <fork>true</fork><!-- 要使compilerVersion标签生效,还需要将fork设为true,用于明确表示编译版本配置的可用 --> <executable><!-- path-to-javac --></executable><!-- 使用指定的javac命令,例如:<executable>${JAVA_1_4_HOME}/bin/javac</executable> --> <compilerVersion>1.3</compilerVersion><!-- 指定插件将使用的编译器的版本 --> <meminitial>128m</meminitial><!-- 编译器使用的初始内存 --> <maxmem>512m</maxmem><!-- 编译器使用的最大内存 --> <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument><!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 --> </configuration> </plugin> // 原文链接:https://blog.csdn.net/liupeifeng3514/article/details/80236077
简化如下:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <executable><!-- path-to-javac --></executable> </configuration> </plugin> </plugins>
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文件下来看吧
End (๑•̀ㅂ•́)و✧
往期精彩文章推荐:
《自建网站的多种姿势》
- Tip:查看一个jar文件是用什么jdk版本编译的
- 查看class文件的编译jdk版本
- 通过编译后的class文件查看jdk的版本
- 查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE
- jdk工具查看class文件的编译版本号
- 如何查看Class文件编译的JDK版本
- 如何查看Class文件编译的JDK版本 by UltraEdit
- IT忍者神龟之查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE
- 【参考】.class文件的JDK编译版本查看
- CMD中查看CLASS文件编译的JDK版本
- 如何查看.class文件的JDK编译版本
- 【JDK】 查看class文件编译版本
- 如何查看Class文件编译的JDK版本
- 如何查看一个class文件,是jdk什么版本的编译器编译的?
- 查看jar包中class的jdk编译版本
- 如何查看一个jar文件是用什么版本jdk编译的?
- 如何查看.class文件的JDK编译版本
- 查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE
- 怎么查看jar包的jdk编译版本
- java -查看编译当前class的JDK版本