2014-01-26 101 views

回答

0

如果我要爲源和目標使用不同的級別(例如,將1.7源代碼編譯爲1.5字節代碼,或其他方式),應該擔心嗎?

是的。當然,爲Java 7開發的新API將不會在Java 1.5中存在,因此如果您使用這些API,則您的應用程序將無法運行。

0

最常見的問題是Java 7中可用的庫和Java 5.0中不可用的庫。

因此,您需要使用與目標系統相同的庫進行編譯,以確保您不會使用不可用的庫。

順便說一句Sun/Oracle javac編譯器僅支持將1.1編譯爲1.0,否則源版本和目標版本必須相同。

+0

我認爲你的意思是API庫嗎?至於你的側面說明,感謝它讓我發現,這種交叉編譯只能從[here](http://docs.oracle.com/javase/7)向上(更低的源版本到更高的字節碼版本) /docs/technotes/tools/windows/javac.html)。 – bluearth

+0

@bluearth除了Java 5.0之外,您無法編譯Java 5.0源代碼。它將運行在Java 7 JVM上,但它仍然是Java 5.0源代碼。 –

0

編譯源1.7到1.5字節碼...

如果你的意思是你想使用javac -source 1.7 -target 1.5編譯那麼恐怕將無法正常工作。啓用新的Java 1.7語言功能需要目標爲1.7。這是一種常見的模式。添加新的語言功能時,通常會增加類文件版本號,並且通常需要編譯爲相應的目標版本(或更高版本)。

javac -source 1.5 -target 1.7javac -source 1.5 -target 1.5會工作,但在後一種情況下,如果您不針對Java 1.5版本的'rt.jar'文件進行編譯,則可能會收到編譯器警告。