[英]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.