jre - java更新




Java:未解決的編譯問題 (6)

“java.lang.Error:Unresolved compilation problem”的可能原因是什麼?

附加信息:

在現有JAR之上從構建中復制一組更新的JAR文件並重新啟動應用程序之後,我已經看到了這一點。 JAR是使用Maven構建過程構建的。

如果接口改變,我希望看到LinkageErrors或ClassNotFound錯誤。 上述錯誤暗示了一些較低級別的問題。

乾淨的重建和重新部署解決了這個問題。 此錯誤是否表示JAR已損壞?


ThorbjørnRavnAndersen正確回答了主要部分。

這個答案試圖揭示剩下的問題:帶有錯誤的類文件如何最終在jar中?

每次構建(mvn和javac或eclipse)在遇到編譯錯誤時都會以其特定的方式發出信號,並拒絕從中創建一個Jar文件(或者至少突出地警告你)。 將包含錯誤的類文件靜默獲取到jar中的最可能原因是通過Maven和Eclipse的並發操作。

如果在運行mvn構建時打開Eclipse,則應自動 禁用“ 項目” >“ 構建”,直到mvn完成。


(改寫2015-07-28)

Eclipse編譯包含錯誤的代碼時的默認行為是生成拋出您看到的異常的字節代碼。 這是可能的,因為Eclipse使用自己的內置編譯器,而不是Apache Maven使用的JDK中的javac 。 如果您在使用命令行mvn命令的Maven項目上使用Eclipse,則可能會發生這種情況。

解決方法是修復錯誤並重新編譯,然後重新運行。

該screendump中的設置標有紅色框:


嘗試清理eclipse項目


您可能需要使用新jar從源代碼重新編譯已編譯的類。

嘗試運行“mvn clean”,然後重建


當我使用具有無效類路徑的啟動配置時出現此錯誤。 在我的例子中,我有一個最初使用Maven的項目,因此啟動配置中有一個Maven classpath元素。 我後來改變了項目以使用Gradle並從項目的類路徑中刪除了Maven類路徑,但啟動配置仍然使用它。 我試圖運行它時遇到此錯誤。 清理和重建項目無法解決此錯誤。 而是編輯啟動配置,刪除項目類路徑元素,然後將項目添加回類路徑中的用戶條目。


確保從構建路徑中刪除了不可用的庫(jar文件)





java