所在项目的jdk版本是jdk1.5,而开源框架很多都升级到了1.6的版本,为了测试开源框架与现有jdk的兼容性,分享代码如下:
package org.myframework.jdbc;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
//The first 4 bytes are a magic number, 0xCAFEBABe, to identify a valid class file then the next 2 bytes identify the class format version (major and minor).
//Possible major/minor value :
//create table m2_lib ( library1 varchar2(100)) ;
//select '"'||replace(library1,'\','/')||'",' from m2_lib ;
//
//select * from m2_lib for update;
//major minor Java platform version
//45 3 1.0
//45 3 1.1
//46 0 1.2
//47 0 1.3
//48 0 1.4
//49 0 1.5
//50 0 1.6
public class ClassVersionChecker {
public static void main(String[] args) throws IOException {
// for (int i = 0; i < args.length; i++)
// checkClassVersion(args[i]);
String[] jarsStrings = {
"C:/Users/wanghui/.m2/repository/net/sf/ehcache/ehcache-core/2.4.8/ehcache-core-2.4.8.jar"
};
for (int i = 0; i < jarsStrings.length; i++)
scanJarFileJDK1_5_Version(jarsStrings[i]);
}
private static void checkClassVersion(String filename) throws IOException {
DataInputStream in = new DataInputStream(new FileInputStream(filename));
int magic = in.readInt();
if (magic != 0xcafebabe) {
System.out.println(filename + " is not a valid class!");
;
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
System.out.println(filename + ": " + major + " . " + minor);
in.close();
}
private static void checkClassVersion(InputStream in1) throws IOException {
DataInputStream in = new DataInputStream(in1);
int magic = in.readInt();
if (magic != 0xcafebabe) {
System.out.println(in + " is not a valid class!");
;
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
System.out.println(": " + major + " . " + minor);
in.close();
}
private static void checkClassJDK1_5_Version(String jar,InputStream in1) throws IOException {
DataInputStream in = new DataInputStream(in1);
int magic = in.readInt();
if (magic != 0xcafebabe) {
System.out.println(in + " is not a valid class!");
;
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
if (major >49)
System.out.println(jar+": " + major + " . " + minor);
in.close();
}
public static void scanJarFileJDK1_5_Version(String zipname) {
try {
ZipInputStream zin = new ZipInputStream(
new FileInputStream(zipname));
ZipEntry entry;
while ((entry = zin.getNextEntry()) != null) {
if (entry.getName().endsWith(".class")) {
ZipFile file = new ZipFile(zipname);
InputStream in = file.getInputStream(entry);
checkClassJDK1_5_Version(zipname,in);
break;
}
}
zin.close();
} catch (IOException e) {
}
}
public static void scanZipFile(String zipname) {
try {
ZipInputStream zin = new ZipInputStream(
new FileInputStream(zipname));
ZipEntry entry;
while ((entry = zin.getNextEntry()) != null) {
System.out.println(entry.getName());
zin.closeEntry();
}
zin.close();
} catch (IOException e) {
}
}
public static void scanClassFile(String zipname) {
try {
ZipInputStream zin = new ZipInputStream(
new FileInputStream(zipname));
ZipEntry entry;
while ((entry = zin.getNextEntry()) != null) {
if (entry.getName().endsWith(".class")) {
System.out.println(entry.getName());
ZipFile file = new ZipFile(zipname);
InputStream in = file.getInputStream(entry);
System.out.println(in);
checkClassVersion(in);
break;
}
}
zin.close();
} catch (IOException e) {
}
}
public static void loadZipFile(String zipname, String name) {
try {
ZipInputStream zin = new ZipInputStream(
new FileInputStream(zipname));
ZipEntry entry;
System.out.println("");
while ((entry = zin.getNextEntry()) != null) {
if (entry.getName().equals(name)) {
BufferedReader in = new BufferedReader(
new InputStreamReader(zin));
String s;
while ((s = in.readLine()) != null)
System.out.println(s + "/n");
}
zin.closeEntry();
}
zin.close();
} catch (IOException e) {
}
}
}
分享到:
相关推荐
将1.5版本编译的jar包降级转编译为1.4版本的jar包
jdk1.5环境下编译的jar包在JDK1.4运行环境中出现Could not be defined due to: XXX/XXX/XXX ( Unsupported major.minor version 49.0 )错误。 例如:Struts2默认运行环境是JDK1.5,如果放到WAS6.0下则会出现以上错误...
前几天上传过这个资源,因为是在jdk1.6上开发的, 测试了一下在jdk1.5上不能用, 今天重新用jdk1.5编译了一下, 这个是可以支持jdk1.5+的 将 pu-xlscommon-1.0.0.jar 添加到工程的 /lib 目录下 用法在附件中 XlsTest....
2.1 下载第三方QRCode.jar包和现有案例,先验证在jdk高版本是否可以正常使用 2.2 下载jd-gui反编译工具,保存源码 3.3 把源码和现有案例放到一个工程下,jdk修改为jdk1.4后报错,逐步修改错误,错误修复后,生成...
我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变量的值。这样的话,如果在debug的时候查看局部变量, 就必须自己编译相应的源码使之拥有调试信息。要达到这个目的,一是...
此版本是基于jdk1.8进行编译。可在相应的环境下运行。 opencv4.8.0人脸识别的类库,在windows 10 下 vs2022的cmaker编译。原生的opencv4.8.0是基于jdk11编译的。此版本是基于jdk1.8进行编译。可在相应的环境下运行。...
关于调试jdk源码显示源码变量值的rt.jar重编译包
此转换器能将JDK1.5编译的jar包转换成1.4的jar包
org.json-jdk1.5版 ...使用org.json最新源码,重新利用jdk1.5 进行了编译,不包含zip包。请注意查阅。(网上流行的org.json-20090211.jar是使用jdk1.6编写的) 注意:此包和net.sf.json-lib.jar用法不同。
各个版本的JDK下载地址 JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层...
支持jdk7一下的jar包,jdk8以上的jar包如果包含lamda表达式破解会有乱码
主要介绍了java项目jar包与jdk的版本不兼容的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
nutz官方的是采用JDK1.6编译。但还有很多老系统是采用JDK1.5的,现在修改一些源代码,编译一个JDK1.5的jar报.
由于信鸽1.1.7版本只支持jdk1.8,经我反编译,且修改后,形成支持jdk1.7的信鸽1.1.7skd(jar)包。提供给大家,避免重复做事。
jdk1.8编译类文件反编译工具。使用方式:java -jar procyon-decompiler-0.5.30.jar ***.class -o c:\**
重新编译的jdk1.8.0_40的 rt.jar包,用于解决jdk自带的rt.jar 在调试时不能查看局部变量的问题。
spring 4.0.4 jar包 1.6环境编译
Java调用IReport5.6需要的jar包,支持JDK1.7。亲测可用
JDK1.5(jdk-1_5_0-windows-i586) JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握...
在网上下载了jpinyin的jar包,发现是jdk1.7编译的,而我的jdk是1.6的,会报Unsupported major.minor version 51.0异常。所以自己把源码从新用jdk1.6编译了下,这样就可以在jdk1.6的环境中用了。