如何使用Java 6针对Java 1.4库构建Java项目?

前端之家收集整理的这篇文章主要介绍了如何使用Java 6针对Java 1.4库构建Java项目?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个最初是为 Java 1.4编写的项目,但我的Mac上只有Java 6,我无法安装Java 1.4.

通常,我会使用这样的一行来编译:

javac -source=1.4 -target=1.4 MyClass.java

但是,MyClass.java实现了java.sql.ResultSet接口,它在Java 6中添加了几个新方法,因此我得到了如下编译错误

MyClass is not abstract and does not override abstract method
updateNClob(java.lang.String,java.io.Reader) in java.sql.ResultSet

我不能简单地实现缺少的方法,因为许多使用泛型,这在Java 1.4中是不可用的.

似乎解决方案是获取和编译Java 1.4 JAR.所以,我有几个问题:

>有更好的方法吗?
>如何指定我的Java 1.6 javac,我想使用1.4 JAR而不是Java 6 JAR?
>这是否会起作用,如果是这样,项目是否会在Java 1.4和Java 6上运行?
>我如何在Maven中执行此操作?

谢谢!

解决方法

你的情况似乎很人为.我会尽力简化问题.首先,我将忽略你关于Maven的问题.

所以我先说一些事实:

-source = 1.4表示:亲爱的编译器,请接受只有JDK 1.4的javac提供的语言结构—不是库功能.

-target = 1.4表示:亲爱的编译器,请以二进制文件格式编写类文件,该格式与JRE 1.4兼容.

我收集到您对JDK 1.4的加载时兼容性感兴趣,即您希望JDK 1.4可以加载您的设置中生成的类文件.是对的吗?

您是否也想支持源兼容性?即你想让其他人在JDK 1.4上编译你的代码吗?

如果上一个问题的答案是肯定的,我会尝试在OS X上安装JDK 1.4.它支持多个已安装的JDK.所以我很确定这是可能的.如果没有选择使用:

-source=1.4 -target=1.4 -bootclasspath=[path/to/1.4.jar]

注意,不要使用-Xbootclasspath.这会更改执行javac的jvm的引导类路径.

如果上述问题的答案是否定的.您可以处理-source = 1.4,从而允许您在代码中使用泛型和其他Java 5增强功能.但是您仍然必须使用以下方法提供二进制兼容性:

-target=1.4  -bootclasspath=[path/to/1.4.jar]

另一种选择是使用Retroweaver.

重新阅读你的问题之后,我想补充说你必须掌握jdbc类文件的JDK 1.4变体.否则,您将遇到您在问题中显示的编译器错误.

猜你在找的Java相关文章