我的电脑上安装了 jre7。 在 Eclipse Kepler 中,我创建了一个编译器合规级别为 1.5 的项目。 源兼容性设置也是 1.5。但这个设置不起作用。
我可以使用1.6或更高版本中声明的方法编写代码。例如:
String s = "aaa";
boolean b = s.isEmpty();
java.lang.String中的isEmpty()方法是从1.6开始的。
当然,当在真实的 jre 1.5 环境中运行生成的类文件时,我遇到了 NoSuchMethodError 异常。
这是我的来源和设置:
我该如何解决这个问题?或者这是一个 Eclipse 错误?
最佳答案
这些设置与 javac 编译器的 -source 和 -target 标志相关,该编译器启用向后兼容性(有关说明,请参阅示例 this SO 问题和答案)。
这主要是一个技术选项,而不是一个功能,即 Eclipse 中的这些设置从来都不是为了让您摆脱了解旧 JRE 中可用和不可用的内容的负担。但 Eclipse 确实为您提供了实现这一目标的选项,甚至在 Java 编译器选项屏幕的底部显示一条警告消息,告诉您如何实现这一目标(是的,这确实涉及下载和安装 JRE 的旧(目标)版本 - 没有办法解决这个问题)。
关于java - Eclipse 中的源代码兼容性设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803174/