所在项目的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包是一个必要的步骤。下面将详细阐述如何进行这个过程。 首先,我们需要了解Java版本之间的差异。Java 1.5(也称为Java 5.0)引入了许多重要的语言特性...
在Java开发过程中,时常会遇到跨版本的问题,尤其是在旧版JDK环境中运行新版JDK编译的代码。这里我们讨论的焦点是“JDK1.5环境下编译的jar包在JDK1.4环境下运行”所遇到的问题,具体表现为“Unsupported major.minor...
前几天上传过这个资源,因为是在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后报错,逐步修改错误,错误修复后,生成...
此版本是基于jdk1.8进行编译。可在相应的环境下运行。 opencv4.8.0人脸识别的类库,在windows 10 下 vs2022的cmaker编译。原生的opencv4.8.0是基于jdk11编译的。此版本是基于jdk1.8进行编译。可在相应的环境下运行。...
当一个使用了更高版本JDK编译的jar包在低版本JDK环境下运行时,就会出现“Unsupported major.minor version”错误,这是因为低版本JDK无法识别新版本的字节码格式。 例如,在给定的描述中提到的错误“Unsupported ...
我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变量的值。这样的话,如果在debug的时候查看局部变量, 就必须自己编译相应的源码使之拥有调试信息。要达到这个目的,一是...
Java JDK 11是Oracle公司推出的Java开发工具包的一个重要版本,它包含了Java运行环境(JRE)和用于编译、调试以及管理Java应用程序的工具。JDK 11的发布标志着Java进入了一个新的时代,因为它是Java SE 11(也称为...
"nutz-1.r.57-jdk1.5-source.jar"则是编译后的源码包,它提供了修改后的源代码,方便开发者查看和理解针对JDK1.5所做的改动。这对于维护和调试是非常有帮助的,因为可以直接查看源代码,找出可能导致问题的特定修改...
关于调试jdk源码显示源码变量值的rt.jar重编译包
- **多版本JAR支持**:Java 7引入了`--module-path`和`--add-modules`选项,允许在同一个项目中使用不同版本的JAR文件,提高了兼容性。 - **字符串in switch语句**:现在可以直接在switch语句中使用字符串,使得...
描述中提到,这款反编译工具支持JDK 7及以下版本的.jar包。这是因为在Java 7及之前的版本,字节码和语言特性相对简单,反编译的结果通常较为准确。然而,对于JDK 8及以上版本,特别是包含Lambda表达式的.jar包,反...
这个jar包特别针对JDK1.6进行了优化和适配,确保在该版本的Java环境中能够正常运行。ZXing库广泛应用于移动设备和服务器端,允许程序生成和读取多种类型的条形码和二维码,如QR Code、Aztec、Code 39、EAN-13等。 1...
确保所有依赖的jar包都在类路径中,并且JDK版本与IReport支持的版本相匹配,才能成功运行报表生成任务。 总之,Java调用IReport 5.6进行报表生成涉及到一系列的jar包依赖,包括JasperReports、IReport Designer、...
本文将深入探讨“编译Tomcat源码所需jar包”这一主题,帮助开发者了解如何从源码构建Tomcat,以及在这个过程中需要用到的关键jar包。 首先,我们来了解一下为什么要从源码编译Tomcat。直接下载预编译的二进制版本...
JDK 1.5,也被称为Java SE 5.0,是Java历史上的一个重要版本,发布于2004年9月30日。这个版本引入了许多新特性,显著提升了开发效率和代码质量。 1. **泛型(Generics)** 泛型是JDK 1.5中的关键特性之一,它允许...
IBM JDK 1.5 for Linux 64位是一款专为Linux操作系统设计的Java开发工具包,由IBM公司提供。此版本的JDK是基于Java Development Kit(JDK)1.5,也称为Java 5.0,它在Java平台标准版(Java SE)的历史上是一个重要的...
org.json-jdk1.5版 ...使用org.json最新源码,重新利用jdk1.5 进行了编译,不包含zip包。请注意查阅。(网上流行的org.json-20090211.jar是使用jdk1.6编写的) 注意:此包和net.sf.json-lib.jar用法不同。
这个“JDK转换器(1.5-->1.4)”工具对于那些需要在旧版本JRE上运行的项目非常有用,它能够帮助开发者解决由于版本不兼容带来的问题,使得代码能在较旧的Java环境中顺利执行。使用这个转换器时,开发者需要注意转换...
本文档不仅覆盖了JDK 1.5至1.7三个版本的下载信息,还对JDK的基本构成进行了详细介绍,并提供了官方中文和英文的帮助文档资源,以便于开发者更好地理解和使用Java技术栈。 #### JDK简介 JDK(Java Development Kit...