如何使用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.所以,我有几个问题: >有更好的方法吗? 谢谢! 解决方法
你的情况似乎很人为.我会尽力简化问题.首先,我将忽略你关于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变体.否则,您将遇到您在问题中显示的编译器错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |