2015-08-08 73 views
1

我想重新编译一个旧的jar文件(它是在java 1.2中编译的)。所以我不需要在Java 1.2中编译它。但没有找到一个jdk 1.2,我可以在Windows 7(和64位)上安装。在Windows 7中安装JDK 1.2

有什么建议吗?

在此先感谢!

回答

3

是的,您可以在编译时设置编译器的版本。并将你的java代码编译成旧版本的java。

从甲骨文的文章:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

交叉编译例

在这里我们使用javac编译将在1.4虚拟机上运行的代码。 %的javac -target 1.2 -bootclasspath JDK1.2/lib目录/ classes.zip \ -extdirs “” OldCode.java

+0

谢谢你。编号喜欢尝试你的解决方案。但我如何指定bootclasspath,如果我有一个jdk1.2.exe?我需要下载jdk1.2作为zip吗? – pebbles

2

有两种情况,只是编译旧代码,实际上开发的是一个旧的JRE。

为了编译您不需要旧的JDK,可以调整目标语言级别javac使用-target选项编译(请参阅:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html) - 虽然可能存在边缘情况可能会破坏已编译的代码,如果编译器决定为旧的JRE中不存在的方法选择不同的重载。

对于开发旧的JRE兼容代码,您可以使用上述方法,但您可以使用不存在于真正的旧JRE中的API来有意识地运行风险。为了避免这个问题,您需要实际的1.2 API,这意味着您需要来自真正的1.2 JRE/JDK的rt.jar文件。这可以添加到您的IDE中的项目中(并且当前例如1.8 JDK已被删除)。如何设置的详细过程取决于IDE。同样,可以使用命令行开关将1.2 rt.jar提供给javac。再次,您不需要可运行的1.2 JRE来编译/开发。

+0

感谢您的快速回答。我运行日食。我不知道如何把它放在那里。我的ecipse中的最低编译级别是jdk 1.3 ...但是如果认识到我在虚拟机上获得了windows xp 32bit。在那里我可以安装jdk 1.2,它运行得很好... – pebbles