使用不同的源代码和字节码版本编译java源代码

使用不同的源代码和字节码版本编译java源代码,java,compilation,Java,Compilation,Java编译器(sun的javac)允许用户指定源代码兼容性级别(带-source)以及生成的字节码兼容性级别(带-target) 如果我要对源代码和目标代码使用不同级别的代码(例如,将1.7源代码编译为1.5字节码,或者反过来),是否应该引起关注 如果我要对源代码和目标代码使用不同级别的代码(例如,将1.7源代码编译为1.5字节码,或者反过来),是否应该引起关注 对。当然,为Java 7开发的新API在Java 1.5中不存在,因此如果您使用这些API,您的应用程序将无法运行,最常见的问题是J

Java编译器(sun的javac)允许用户指定源代码兼容性级别(带-source)以及生成的字节码兼容性级别(带-target)

如果我要对源代码和目标代码使用不同级别的代码(例如,将1.7源代码编译为1.5字节码,或者反过来),是否应该引起关注

如果我要对源代码和目标代码使用不同级别的代码(例如,将1.7源代码编译为1.5字节码,或者反过来),是否应该引起关注


对。当然,为Java 7开发的新API在Java 1.5中不存在,因此如果您使用这些API,您的应用程序将无法运行,最常见的问题是Java 7可用的库在Java 5.0中不可用

因此,您需要使用与目标系统相同的库进行编译,以确保不使用不可用的库

顺便说一句,Sun/Oracle
javac
编译器只支持编译1.1到1.0,否则源版本和目标版本必须相同

正在将1.7源代码编译为1.5字节码

如果您的意思是您试图使用
javac-source 1.7-target 1.5进行编译,那么我担心这不会起作用。启用新的Java1.7语言特性要求目标为1.7。这是一种常见的模式。添加新的语言特性时,类文件版本号通常会增加,并且通常需要编译到相应的目标版本(或更高版本)


javac-source 1.5-target 1.7
javac-source 1.5-target 1.5
可以工作,但在后一种情况下,如果您不针对Java 1.5版本的“rt.jar”文件进行编译,可能会收到编译器警告。

我认为是库,您指的是API?至于你的旁注,谢谢,这让我发现这种交叉编译只能从@bluearth向上编译(从较低的源代码版本到较高的字节码版本)。@bluearth除了Java 5.0之外,你不能为任何东西编译Java 5.0源代码。它将在Java7JVM上运行,但仍然是Java5.0源代码。