我安装了Java7,但将项目的JDK兼容性设置为Java6。不幸的是,这与使用Java6编译并不相同。
例如,接口javax.imageio.stream.ImageInputStream在Java7中扩展了Closable,但在Java6中不是这样的。在我的设置下(Java7符合Java6),使用ImageInputStream可以很好地编译(Java7符合Java6),但在使用Java6时会出现编译错误。是这样的吗?
发布于 2012-08-31 15:34:20
为了为较旧的JRE编译Java代码,您需要做两件事:
你已经谈到了第一点,但没有谈到第二点,这就是你的问题。
如何做到这一点取决于您的构建环境。
在Eclipse中,要使用的Java System库被设置为构建路径的一部分:转到项目属性/ Java Build Path / Libraries,然后删除错误的"JRE“,并使用"Add Library...".
javac,you use option -bootclasspath”添加正确的库。示例:javac -target 1.5 -bootclasspath jdk1.5.0/lib/rt.jar OldCode.java (来自javac manpage的“交叉编译选项”部分)。发布于 2012-08-31 15:27:26
对于JDK遵从性,您设置的主要是类格式。
类的字节码格式有几次演变。JDK可以用以前的格式编译,而VM不能执行用更新的格式编译的类。
但是所使用的库始终是您用于执行的JDK中可用的库。javax.imageio.stream.ImageInputStream的JDK6版本没有与Java7捆绑在一起。
发布于 2012-08-31 15:35:30
编译时使用bootclasspath选项。我以为JDK7警告说,如果使用cross-compilation,就不要这么做。
https://stackoverflow.com/questions/12210665
复制相似问题