簡體   English   中英

為什么Eclipse抱怨項目指定了編譯器遵從性1.8,但使用了JRE 11?

[英]Why does Eclipse complain that the project specifies compiler compliance 1.8 but a JRE 11 is used?

我將Eclipse項目編譯器的合規性設置為1.8,因為我想生成可以在安裝JRE 8的計算機上執行的jar文件。

但是,在開發計算機中,我僅安裝了JRE 11。 我認為這是可以的,因為我希望JRE 11能夠執行1.8個及以上版本的文件。

但是,Eclipse對此發出警告(我找不到禁用該方法的警告),並且編譯器首選項對話框顯示“選擇1.8兼容性時,請確保安裝並激活了兼容的JRE(當前為11)”,這是聽起來像JRE 11與1.8不兼容。 真的是這樣嗎?

我在這里所做的錯誤假設到底是什么?

另外,我是否真的需要安裝JRE 8才能生成JRE 8兼容代碼?

項目>屬性:Java編譯器中,選中使用'--release'選項復選框以避免警告。

使用Use'--release'選項並且將編譯器遵從性級別設置為1.8時 ,即使對於Java 11 JDK,例如" foo ".strip()也會顯示為錯誤,因為Java 11中引入的String#strip()是Java 8中缺少

在此處輸入圖片說明

也可以看看:

如果要100%確定,請使用將在生產中使用的同一JDK進行編譯,至少使用相同的主版本進行編譯。 JRE 11可以肯定地執行1.8類文件。 但是,較早的JVM可能無法運行較新的類文件。 即使您以舊版本為目標並生成應兼容的類文件,也可能會針對較新的JDK類進行編譯,並且API確實發生了變化。 當您嘗試在較早的JVM上運行代碼時,這可能會破壞您的代碼。

在大多數情況下,它都可以工作,但是比后悔更安全! 在這種情況下,請聽取警告,它們確實有重點。

編輯:參見咆哮者的答案,而不是--release選項。

您是否沒有安裝JDK的任何機會? 如果我沒有記錯的話,警告與此有關。 聽起來像我的Eclipse,OpenJDK,Ubuntu組合缺少openjdk-11-jdk軟件包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM