ZKX's LAB

Linux上如何在运行JAR包的时候指定JDK 怎么查看jar包 jdk版本信息

2020-07-19知识10

如何获取jar包的jdk版本号 用7-zip打开.jar包,查看META-INF\\MANIFEST.MF中的内容,Build-Jdk属性就是JDK的版本,比如:Build-Jdk:1.5.0_2211说明其JDK版本为1.5.0.22。注意:一个.jar文件中,如果没有这个字段,就必须通过下面一种方法来查看通过反编译.class文件来查看解压.jar包,能得到.class文件。这里说的很清楚http://blog.csdn.net/ybdesire/article/details/50916667如何获取jar包的jdk版本号 1,通过class文件将编译出来的class文件拖入到eclipse下,如:可以看到,版本号为1.52,javap命令查看javap MediaManager-verbose>;majorver.txt其中MediaManager为类名,将版本信息输出到majorver.txt,版本信息如下:可以看到jdk版本为47。major version和jdk版本对应关系如下:Major version Java46 Java 1.247 Java 1.348 Java 1.449 Java 550 Java 651 Java 7jar的版本号必须和虚拟机相对应,否则会出现版本不支持的错误。如何看一个jar 包的jdk版本号 用7-zip打开.jar包,查看META-INF\\MANIFEST.MF中的内容,Build-Jdk属性就是JDK的版本,比如:Build-Jdk:1.5.0_221说明其JDK版本为1.5.0.22。注意:一个.jar文件中,如果没有这个字段,就必须通过下面一种方法来查看通过反编译.class文件来查看解压.jar包,能得到.class文件。用JDK自带的javap反编译.class文件,用如下命令:javap-verbose Configuration.class1查看得到的信息中,major version属性的内容,如下major version:521说明这个.class文件是由JDK1.8编译得到的。J2SE 6.0=50(0x32 hex)J2SE 5.0=49(0x31 hex)JDK 1.4=48(0x30 hex)JDK 1.3=47(0x2F hex)JDK 1.2=46(0x2E hex)JDK 1.1=45(0x2D hex)注意:一个.jar包中可能有多个.class文件,每个.class的JDK版本可能会不一样(编译器多个项目设置不同)如何查看一个jar文件是用什么版本jdk编译的? 有一种稍微麻烦的办法,可以试试在jar包中,用winrar解压一个类文件,然后在命令行下面输入javap-verbose classname会输出一些信息,大致如下:Compiled from\"HtmlCrawer.javapublic class org.eagleeye.html.HtmlCrawer extends java.lang.ObjectSourceFile:\"HtmlCrawer.javaminor version:0major version:50Constant pool:const#1=class#2;org/eagleeye/html/HtmlCrawerconst#2=Asciz org/eagleeye/html/HtmlCrawer;const#3=class#4;java/lang/Objectconst#4=Asciz java/lang/Object;const#5=Asciz client;后面省略了,可以看到前面有两行:minor version:0major version:50表示了类文件的版本,具体内容可以参考:http://hi.baidu.com/songdenggao/blog/item/3c354e4a877e0d2609f7ef93.html.这里面有一张表,可以很容易地查到版本如何用命令查看war或jar包编译的JDK版本号 如果没有eclipse,也可以使用java自带的工具,查看 class编译时使用的编译器版本。javap-v ServiceImpl.class1或者javap-verbose ServiceImpl.classLinux上如何在运行JAR包的时候指定JDK,在这里我以一个简单的Tet.java为例子,打包成Tet.jar,然后指定jdk运行Tet.jar。

#编译程序#jdk#版本号

随机阅读

qrcode
访问手机版