Java編譯器(sun's javac)允許用戶指定源代碼兼容級別(使用-source)以及生成的字節碼兼容級別(使用-target)。使用不同的源代碼和字節代碼版本編譯java源代碼
如果我要爲源和目標使用不同的級別(例如,將1.7源代碼編譯爲1.5字節代碼或其他方式),是否應該擔心?
Java編譯器(sun's javac)允許用戶指定源代碼兼容級別(使用-source)以及生成的字節碼兼容級別(使用-target)。使用不同的源代碼和字節代碼版本編譯java源代碼
如果我要爲源和目標使用不同的級別(例如,將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
編譯那麼恐怕將無法正常工作。啓用新的Java 1.7語言功能需要目標爲1.7。這是一種常見的模式。添加新的語言功能時,通常會增加類文件版本號,並且通常需要編譯爲相應的目標版本(或更高版本)。
javac -source 1.5 -target 1.7
javac -source 1.5 -target 1.5
會工作,但在後一種情況下,如果您不針對Java 1.5版本的'rt.jar'文件進行編譯,則可能會收到編譯器警告。
我認爲你的意思是API庫嗎?至於你的側面說明,感謝它讓我發現,這種交叉編譯只能從[here](http://docs.oracle.com/javase/7)向上(更低的源版本到更高的字節碼版本) /docs/technotes/tools/windows/javac.html)。 – bluearth
@bluearth除了Java 5.0之外,您無法編譯Java 5.0源代碼。它將運行在Java 7 JVM上,但它仍然是Java 5.0源代碼。 –