慕工程0101907
2022-07-20 16:48:31
我的筆記本電腦上有 Java 8。我使用 java.time 庫(kù)編寫(xiě)了一個(gè)小代碼片段,以使用 Eclipse IDE v4.9(2018-09 版本)計(jì)算應(yīng)用程序處理時(shí)間。該項(xiàng)目使用Java 1.6 編譯器版本。然后我在我的筆記本電腦上運(yùn)行該應(yīng)用程序,它運(yùn)行時(shí)沒(méi)有任何錯(cuò)誤,并且產(chǎn)生了預(yù)期的輸出。然后我使用 Java 1.6 編譯器將應(yīng)用程序?qū)С龅揭粋€(gè) war 文件中,以便在運(yùn)行 Java 1.7 vm 的 tomcat 6 服務(wù)器中運(yùn)行它。我遇到了以下情況:日志文件中沒(méi)有錯(cuò)誤。日志級(jí)別設(shè)置為調(diào)試。應(yīng)用程序處理數(shù)據(jù)庫(kù)行并基于一些邏輯,插入 4 個(gè)不同的數(shù)據(jù)庫(kù)表。在輪詢(xún)輸入數(shù)據(jù)庫(kù)表時(shí),應(yīng)用程序沒(méi)有選擇有效的輸入行。我在筆記本電腦上安裝了 Java 7,將 Java 7 設(shè)置為工作區(qū) JRE,代碼片段引發(fā)了編譯錯(cuò)誤。我的問(wèn)題是,當(dāng)我使用 Java 6 編譯器基于 Java 8 庫(kù)編譯代碼時(shí),構(gòu)建不應(yīng)該失敗嗎?在整個(gè)練習(xí)過(guò)程中,應(yīng)用程序從未出現(xiàn)任何錯(cuò)誤,它在我的筆記本電腦上成功運(yùn)行并產(chǎn)生了預(yù)期的輸出(顯然是由于我的筆記本電腦有 Java 8 vm)。我發(fā)現(xiàn)問(wèn)題根本原因的方式純屬意外。這是 Java 錯(cuò)誤還是已知問(wèn)題?更新:我不是在尋找問(wèn)題的解決方案。我正在尋找 Java 編譯器行為的解釋。
3 回答

開(kāi)心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果您使用 Maven,您的代碼將被運(yùn)行。但是您必須確保僅使用所選 Java 版本的功能。

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
包java.time
僅在 Java 8 中引入。因此,如果您使用它,您的代碼將無(wú)法在以前的 JVM 版本上運(yùn)行。
您應(yīng)該更改 Tomcat 的 JVM 版本或java.time
從項(xiàng)目中刪除相關(guān)代碼。

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
是的,如果您使用 java 7+ 版本中引入的功能,它可能會(huì)失敗。引用幾個(gè):
java.time 庫(kù)。
菱形語(yǔ)法:List list = new ArrayList<>();
Lambda 或流函數(shù)。
switch 語(yǔ)句中的字符串。
Iterable 接口中的 forEach() 方法。
接口中的默認(rèn)方法和靜態(tài)方法。
這不是一個(gè)完整的列表,而是一些示例。
添加回答
舉報(bào)
0/150
提交
取消