1 使用工具Retrotranslator
http://retrotranslator.sourceforge.net/
下载工具Retrotranslator-1.2.9-bin.zip,将其解压到E:\retrotranslator
2 工具介绍
Retrotranslator是一个Java字节码转换工具。它能够把用JDK1.5编译的Java Class转换成可运行在JVM1.4。支持的Java 5.0特性包括:泛型、注释、枚举、可变参数个数、自动装箱/拆箱、增强式的for循环、静态导入、并行工具(Concurrency Utilities)、增强的collections框架。
但是Retrotranslator只支持Java 5.0新特性,不支持Java 5.0里新的API
3 工具的一些限制
- The Java 5.0 memory model is not fully supported even with the syncvolatile and syncfinal options if the fields are being accessed via reflection.
- Only the classes, methods, and fields listed above should work and the other features, like formatted input, are not supported.
- The Java 1.4 compilers and applications performing bean introspection may fail to work correctly with covariant return types.
- The backported implementation of the Java 5.0 API is not interoperable with the original implementation.
- Reflection-based tools may be unable to discover the backported implementation of the Java 5.0 API.
- The Java 5.0 reflection methods may return incomplete information for dynamically generated classes.
- The constants inlined by a compiler and access modifiers are ignored during the verification.
4 转换内容分类
需要转换的内容分为2种:jar包和classes文件的文件
5 转换方式
5.1 命令行方式
5.1.1 降级class文件
将含有jdk1.5编译的class文件放到e:\retrotranslator\classes下,同时新建文件夹classes14,用于存放重新编译生成的1.4版本的class文件。
cmd进入到e:\retrotranslator下,然后执行
java -jar retrotranslator-transformer-1.1.9.jar -srcdir classes -destdir classes14
执行结果如下:
Processing 21 file(s) from classes to class14.
Transformed 14 file(s).
5.1.2 降级jar包
将含有jdk1.5版本class的jar包,放到e:\retrotranslator\lib下,同时新建lib14文件夹,用于存放新生成的jar包
cmd进入到e:\retrotranslator下,然后执行
java -jar retrotranslator-transformer-1.1.9.jar -srcjar lib/struts2-core-2.1.8.1.jar -destjar lib14/struts2-core-2.1.8.1-j14.jar
执行结果如下:
Processing 600 file(s) from lib\struts2-core-2.1.8.1.jar to lib14\struts2-core-2.1.8.1-j14.jar.
Transformed 413 file(s).
注意:
转换jar包,一次只能转换一个,class文件可以批量转换
5.2 其它转换方式
5.2.1 ant方式编译
编写build.xml文件,用ant编译,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project default="translate" name="pluto-project" basedir=".">
<target name="translate">
<path id="classpath">
<fileset dir="项目文件的lib文件夹所在位置" includes="**/*.jar"/>
</path>
<taskdef name="retrotranslator"
classname="net.sf.retrotranslator.transformer.RetrotranslatorTask" />
<retrotranslator
destdir="ant编译后生成文件的目录" verify="true"
srcdir="项目编译后classes文件夹所在目录">
<!-- 项目中用到的包或类 -->
<classpath refid="classpath"/>
<!-- 1.4JDK的运行时包 -->
<classpath location="jdk1.4.2安装目录/jre/lib/rt.jar"/>
</retrotranslator>
</target>
</project>
分享到:
相关推荐
总之,将1.5版本的jar包降级到1.4版本是一个涉及多个步骤的过程,包括安装不同版本的JDK、使用降级工具、调整构建配置、手动修改代码以及严格的测试验证。这个过程虽然复杂,但它确保了软件能够在旧版本的Java环境中...
这里我们讨论的焦点是“JDK1.5环境下编译的jar包在JDK1.4环境下运行”所遇到的问题,具体表现为“Unsupported major.minor version 49.0”的错误。这个错误的根源在于Java字节码版本不兼容。Java字节码版本与JDK版本...
标题中的“利用Retrotranslator将Jdk1.5项目迁移到1.4”是指使用Retrotranslator工具将基于Java 1.5版本的代码库转换为兼容Java 1.4的代码。这是因为某些环境或者旧系统可能只支持早期版本的Java,而新项目可能已经...
Retrotranslator是一个强大的工具,主要用于将Java应用程序从较新的JDK版本(如JDK1.6或JDK1.5)回译到较旧的JDK1.4版本。这个工具对于那些依赖于JDK1.4环境但又希望利用新版本JDK中的某些功能或者优化的开发者来说...
解决方法是要么将JMeter降级到与BadBoy相兼容的版本,要么升级BadBoy到最新版本以支持当前JMeter的版本。 总的来说,JMeter是一个强大的性能测试工具,适用于各种测试场景,但使用时需要关注版本兼容性和正确的环境...
然而,确保你的开发环境满足其JRE版本的要求,否则需要降级到sqljdbc.jar或者考虑使用其他JDBC驱动,如开源的jTDS驱动。在选择驱动时,还应考虑应用的具体需求,如性能、稳定性和社区支持等因素。
- **路由规则:** Gateway 支持动态配置路由规则,可以根据路径、查询参数等条件将请求转发到不同的微服务。 - **过滤器链:** 支持自定义过滤器,可用于实现认证、限流等功能。 #### 七、SkyWalking:服务网格观测...