2017-02-11 262 views
1

我在IntelliJ中調試Java代碼時遇到了一個問題。調試時源代碼與字節碼IntelliJ 15不匹配

我連接到遠程服務器,我正在使用Maven構建我的項目並且項目正在正確構建,並多次驗證它。

每當我插入一個調試點時,IntelliJ都會返回一個錯誤消息「在那個位置沒有可執行代碼」。插入一些斷點時,IntelliJ在執行「源代碼不匹配字節代碼」時返回錯誤消息。

嘗試了各種鏈接提供的解決方案,如:使用同步選項,無效緩存,重建等。

+0

您是否確定IDE中的源代碼對應於在遠程JVM中加載的類?可能是因爲在類路徑中有一些額外的jar,而舊版本的版本會覆蓋較新的版本,或者代碼是在沒有調試信息的情況下構建的,或者某些註釋處理器或obfucsator在構建過程中更改了目標類。 – CrazyCoder

+0

有時候,當你在maven中有更新版本的項目時,會發生這種情況,但本地版本已過時。試試'Settings-> Maven-> Reimport project'並看看會發生什麼。 –

+0

**安東**,我試過你提到的,雖然我沒有看到一個選項重新導入項目,啓用了選項總是更新快照。但沒有成功。早些時候,我在IntelliJ的單個窗口中打開了多個構建在同一個回購站中的項目,現在我嘗試打開單個項目,但沒有成功。 –

回答

1

您需要確保IDE中的源代碼與遠程JVM中加載的類相對應。

這可能是因爲在類路徑中有一些額外的jar,而舊版本的版本會覆蓋更新的版本,或者代碼是在沒有調試信息的情況下構建的,或者某些註釋處理器/混淆器在構建過程中更改了目標類。使用javap或反編譯器可以幫助檢測不同步的類。

正如您在評論中提到的那樣,服務器上運行的代碼來自不同的git分支,而不是您在IDE中使用的代碼。這可以通過在IDE中重建項目並將實際代碼部署到服務器來避免。