`
tap2008
  • 浏览: 51573 次
  • 来自: 湖南株洲
社区版块
存档分类
最新评论

jdk1.5的类转换成jdk1.4的类文件

    博客分类:
  • Ant
阅读更多
  搞了一个晚上终于搞出来了,把jdk1.5环境下的类文件编译成1.4环境下的类文件,我使用的是Retrotranslator-1.2.2。使用Ant编译依赖三个jar文件,retrotranslator-transformer-1.2.2.jar,retrotranslator-runtime-1.2.2.jar,backport-util-concurrent-3.0.jar。
  具体请看Ant配置,如下:
  首先是路径配置,文件名为:build-dist.properties
#jdk1.4路径
jdk14_home=C:/j2sdk1.4.2_05

#当前路径
Retrotranslator.dir = .
#1.4的class文件路径
Retrotranslator.src.dir = ${Retrotranslator.dir}/src
#jar文件路径
Retrotranslator.jar.dir = ${Retrotranslator.dir}/jar
#生成的jar文件或者1.4的class文件的路径
Retrotranslator.dist.dir = ${Retrotranslator.dir}/dist

   然后是build文件,文件名为:buildRetrotranslator.xml
   配置好Ant环境,使用命令ant -f buildRetrotranslator.xml [任务名,不加则为默认],如果文件名为build.xml,则使用ant [任务名,不加则为默认]。
<?xml version="1.0" encoding="UTF-8"?>
<project name="Retrotranslator" default="jdk14jar">

	<property file="build-dist.properties"/> 
	
	<path id="compile.classpath">
		<fileset dir="${Retrotranslator.dir}">
			<include name="**/*.jar"/>
		</fileset>
	</path>
	
	<!-- 初始化任务 -->
	<target name="init">
		<mkdir dir="${Retrotranslator.dist.dir}"/>
		<taskdef name="retrotranslator" classpathref="compile.classpath"
		             classname="net.sf.retrotranslator.transformer.RetrotranslatorTask" />
	</target>
	
	<!-- 把jdk1.5的类文件编译成jdk1.4的class文件 -->
	<target name="jdk14src" depends="init">
	    <retrotranslator destdir="${Retrotranslator.dist.dir}" verify="true">
	     	<!-- 包含class文件,并换成1.4的class文件-->
	    	<fileset dir="${Retrotranslator.src.dir}" includes="**/*.class"/>
	    	<!-- 包含jar文件,直接转换成1.4的class文件-->
        <jarfileset dir="${Retrotranslator.src.dir}" includes="**/*.jar"/>
        <classpath location="${jdk14_home}/jre/lib/rt.jar"/>
        <classpath refid="compile.classpath"/>
	    </retrotranslator>
	</target>
	
	<target name="jdk14jar" depends="init">
		<!-- 直接把jar文件转换成1.4的jar文件-->
		<retrotranslator srcjar="${Retrotranslator.jar.dir}/jasperreports-1.2.5.jar"
			destjar="${Retrotranslator.dist.dir}/jasperreports-1.2.5-jdk14-2.jar" verify="true">
			<classpath location="${jdk14_home}/jre/lib/rt.jar"/>
			<classpath refid="compile.classpath" />
		</retrotranslator>
	</target>
</project>
  • 大小: 723.1 KB
分享到:
评论
5 楼 presses 2008-07-24  
你好像把这个搞复杂了。Struts2默认好像就附带这个包。
先把在jdk5下开发的类打包成jar文件,然后在命令行就可以直接转化为jdk1.4版本的jar。
这个以前用过,试过可以。但不太感用,只要是怕有bug,然后调试不太方便。
4 楼 dong2590 2008-07-23  
哈哈哈哈~~~~没想到在你这里找到我想要的了...官方网站没办法下载...郁闷~~~~~
3 楼 tap2008 2007-10-14  
如果使用eclipse的话,可以编译成你要的版本,不过只能向下兼容,就是1.5的可以编译成1.4的,不能编译成1.6的。

如果已经编译好的类的话,就没有办法了,只有使用反编译,然后重新编译java文件,这里是直接转换class文件。
2 楼 wl95421 2007-10-13  
默认是不可以的
因为class文件头上有版本号
5的更高一些,所以JDK4是不能运行的

不过可以通过JDK5的编译开关 强制编译成1.4的

额外加一句,即使使用强制编译成1.4也有可能运行不了
比如你调用了JDK1.5的某些新类或者新方法,就有可能运行不了
因为1.4上没有相应的类或者方法
1 楼 fkpwolf 2007-10-13  
疑问:JDK5编译的所有class都不能在jdk4上运行么?

相关推荐

    详细介绍JDK1.5的各种新特性

    8. **NIO.2(New I/O 2)**:虽然NIO(非阻塞I/O)是在JDK1.4引入的,但JDK1.5对其进行了扩展,添加了文件系统操作和文件观察者等功能,使得文件操作更加高效和灵活。 9. **类型安全的异常检查(Checked Exceptions...

    JDK1.5与1.4区别

    在JDK 1.4中,调用Math.sqrt()需要写成`java.lang.Math.sqrt()`,但在JDK 1.5之后,可以使用`import static java.lang.Math.sqrt;`然后直接调用`sqrt()`。 5. **变长参数(Variable-Length Arguments)** - 变长...

    jdk1.5 jdk1.6 反编译 工具

    标题中的“jdk1.5 jdk1.6 反编译 工具”指的是用于对Java字节码进行反编译的软件,这类工具能够将Java的.class文件转换回可读的.java源代码形式,这对于理解和学习已有的Java类库或者进行逆向工程非常有帮助。...

    jdk1.5 windows 64位官方正式版

    1. **泛型(Generics)**:泛型是JDK 1.5最显著的新特性之一,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和重用性。这减少了在运行时可能遇到的ClassCastException。 2. **自动装箱/拆箱...

    jdk1.5环境下编译的jar包在JDK1.4环境下运行

    Retrotranslator是一个字节码转换器,它可以将使用JDK1.5特性(如泛型、注解、枚举等)编译的Java类转换回JDK1.4兼容的字节码格式。这样,原本在JDK1.5环境下编译的jar包就可以在JDK1.4环境中正常运行了。 使用...

    jdk1.4,jdk1.5,jdk6

    本文将深入探讨JDK 1.4、JDK 1.5(也称为Java 5)和JDK 6这三个重要版本的关键特性。 **JDK 1.4** JDK 1.4是Java发展历程中的一个里程碑,发布于2002年。这个版本引入了许多关键的新特性,包括: 1. **异常链**:...

    利用Retrotranslator将Jdk1.5项目迁移到1.4

    标题中的“利用Retrotranslator将Jdk1.5项目迁移到1.4”是指使用Retrotranslator工具将基于Java 1.5版本的代码库转换为兼容Java 1.4的代码。这是因为某些环境或者旧系统可能只支持早期版本的Java,而新项目可能已经...

    jdk1.5API中文chm版

    9. **NIO.2(New I/O 2)**:虽然JDK 1.4引入了NIO(非阻塞I/O),但JDK 1.5进一步完善,增加了文件系统操作、文件通道、异步I/O等特性。 10. **异常链(Exception Chaining)**:允许一个异常对象引用另一个异常,...

    JDK1.5源代码,有原文注释

    虽然在JDK 1.4中引入了NIO,但在JDK 1.5中进一步完善,提供了更多的文件系统操作和通道(Channels)功能。 通过阅读和研究这份JDK 1.5的源代码,开发者不仅可以深入了解Java平台的工作原理,还能学习到许多优秀的...

    JDK 1.5 API 中文文档 HTML格式

    10. **NIO.2(New I/O)**:虽然NIO是在JDK 1.4引入的,但1.5对其进行了增强,提供了更高级别的通道和文件系统操作。 这些知识点构成了JDK 1.5的主要改进,对任何Java开发者来说都具有极高的学习价值。有了这个中文...

    JDK转换器(1.5-->1.4)

    这个“JDK转换器(1.5--&gt;1.4)”工具对于那些需要在旧版本JRE上运行的项目非常有用,它能够帮助开发者解决由于版本不兼容带来的问题,使得代码能在较旧的Java环境中顺利执行。使用这个转换器时,开发者需要注意转换...

    jdk_1.5_x86

    10. **NIO.2 (New I/O API)**: 虽然在JDK 7中正式引入,但其前身NIO(Non-blocking I/O)在JDK 1.4发布,JDK 1.5中进一步优化,提供了异步I/O操作。 **安装与配置** JDK 1.5的安装文件为`jdk-1_5_0_22-X86.exe`,...

    java jdk1.5

    JDK 1.5引入了自动装箱和拆箱机制,使得基本数据类型(如int)与对应的包装类(如Integer)可以无缝转换。这为开发带来了便利,避免了手动装箱和拆箱可能导致的NullPointerException。 三、枚举(Enums) Java 1.5...

    JDK 1.5新特性

    在JDK 1.4之前,集合类中的元素类型只能在运行时检查,而在JDK 1.5之后,我们可以通过如下方式声明一个只存储字符串的列表: ```java List&lt;String&gt; listOfEmployeeName = new ArrayList(); ``` 这使得插入非字符串...

    JDK1.4,1.5,1.6的区别

    ### JDK1.4,1.5,1.6的区别 #### JDK1.5 新特性 JDK1.5,也称为Java 5,是Java发展史上的一个重要里程碑,引入了许多新特性,极大地提高了开发效率和代码质量。这些新特性包括: 1. **泛型** - 泛型是一种在编译...

    jdk免安装版1.4、1.5、1.6、1.7

    本资源集合提供了四个不同版本的JDK:1.4、1.5、1.6和1.7,它们都是免安装版,可以直接使用,极大地简化了开发环境的搭建过程。 1. JDK 1.4:这是Java的一个重要里程碑,发布于2002年,引入了许多新的特性和改进。...

    JDK1.5和Tomcat5.5.9.rar

    **JDK1.5与Tomcat5.5.9** JDK(Java Development Kit)是Oracle公司提供的Java编程环境,而Tomcat是一款流行的开源Web服务器和应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)。在本例中,我们讨论...

    JDK1.5中新的语言特征分类介绍

    ### JDK 1.5 中新的语言特征分类介绍 #### 泛型(Generics) 泛型是Java Development Kit (JDK) 1.5 版本中最显著的新特性之一,它为开发者提供了强大的类型安全机制。在Java早期版本中,集合(如`List`或`Set`)...

    jdk1.5 jdk

    9. **NIO.2(New IO)**:虽然JDK 1.4已经引入了NIO,但1.5版本进一步增强了IO库,包括文件系统访问、异步I/O和文件通道等。 10. **静态导入(Static Import)**:允许开发者直接使用类的静态成员,而不需要通过...

Global site tag (gtag.js) - Google Analytics