在项目属性的"Java Compiler“部分,有一些针对"JDK Compliance”的设置。我想将源代码兼容性设置为6,将.class文件的兼容性设置为5。这显然是不允许的:我收到消息“类文件兼容性必须大于或等于源代码兼容性”。
这是Eclipse的限制还是Java版本兼容性的根本问题?有变通的方法吗?
我想在开发中和大多数目标上使用Java6,但我想为一些目标生成与Java 5兼容的工件。如果这意味着有两个构建,只要它是相同的源码,我就没问题。
发布于 2009-07-28 10:22:16
另请参阅this thread指出类似(较老的)问题:
"Java theory and practice: Using Java 5 language features in earlier JDKs":
除非您使用某种外部工具将Java6字节码转换为与Java1.5兼容的字节码,否则不能将类遵从性设置为1.5,将源代码编译器设置为6.0。
发布于 2009-07-28 10:12:26
正如Eclipse所说,您不能从java6源代码生成java5类文件,这是不可行的。如果您需要生成java5构建,则需要使用java5源代码级别。
你真的需要使用Java6源码级别吗?如果您需要使用Java6 API中的某些内容,那么当您尝试运行这些构建时,为Java5生成构建将不起作用。如果你不需要使用Java6接口,那么你也不需要使用Java6源代码兼容性。
发布于 2009-07-28 10:18:02
出现部分问题是因为不仅类格式发生了变化,而且Java 6还添加了/不同于Java 5的API。因此,您可能无意中使用了这些API,然后当您在Java 5上部署时,实现将会丢失。
如果Java 5对您很重要,我会在Java 5 SDK的基础上进行开发和构建。这是唯一确定一切都会按预期工作的方法。
我(曾经)设计了一个跨SDK兼容的项目。它需要两个构建(每个SDK一个),并且代码必须根据使用的SDK有条件地加载所需的API类。我真的一点也不建议你这么做!
注意:你提到了Mac。Java 6可用于Mac(不确定这是否是您提到Mac的理由)
https://stackoverflow.com/questions/1193165
复制相似问题