2013-04-23 23 views
4

我做了一些實用程序,我可以在我正在使用的幾個應用程序中使用。大部分應用程序都支持源代碼1.7,但其中一些不支持(例如,Android應用程序)。轉換源1.7和源<1.7中的Java

ArrayList<String> list = new ArrayList<>(); 
String s = "hi"; 
switch (s) { 
    case "hi": 

例如,在1.7以下的Java版本中不支持菱形運算符和切換字符串。

我希望在構建Eclipse或Netbeans項目時將源代碼轉換爲與1.7以下源代碼兼容。

我可以做到嗎?如果是,如何?如果不是,那我該怎麼做呢?手動將所有源代碼替換爲1.6兼容?

+0

您可以在[ClassFile](http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1)中更改'minor_version'和'major_version'一個十六進制編輯器。但它是危險的,並不總是工作。 – johnchen902 2013-04-23 14:45:43

回答

2

AFAIK,這是不可能的。

你可以做交叉編譯,但是:

的javac不接受一個目標(或編譯策略)比 它被配置爲接受的源語言較低。

https://blogs.oracle.com/abuckley/entry/versioning_in_the_java_platform

這篇文章是從2009年,但我懷疑,這改變了與Java SE 7

解決方法:使用 要支持的最低Java版本的語法(源) 。

使用持續集成服務器(如Jenkins)併爲每個想要支持的JDK配置一個作業(無需進行交叉編譯,這可能會編譯但在運行時會失敗,因爲您使用了一些在舊Java版本中不可用的API。 )

另請注意:Oracle的Java SE 6已達到生命週期結束時間,建議在大多數情況下(例如,當您沒有與Oracle簽訂支持合同時)更新到Java SE 7。

+0

我們有些人沒有選擇。我們處於公司或政府環境中,直到被迫遷移到Java 7時纔打算遷移到Java 7。特別是對於所有的Java 7安全問題。 – 2013-04-23 14:51:36

+2

@GilbertLeBlanc - 我想你會發現很多/大多數這些Java 7安全問題也是Java 6安全問題。例如,最近的四個Java 7安全版本是由Java 6安全版本進行鏡像的。 – 2013-04-23 14:53:57

0

我可以做到嗎?

理論上是。

如果是,怎麼辦?

使用Java 7 - > Java 6源代碼翻譯器。但是,我還沒有聽說過這種翻譯器的存在......

如果不是,那我應該怎麼做呢?手動將所有源代碼替換爲1.6兼容?

這是最實用的方法,除非您可以找到其他人已經實施的翻譯器。