天天看點

IDEA使用插件JRebel熱部署失敗的問題排查

概述

關于 IDEA 如何使用JRebel進行熱部署的問題,可以參考我的另外一篇部落格​​多個 tomcat 應用熱部署調試環境搭建​​。

此處直接抛出使用中遇到的問題:

IDEA使用插件JRebel熱部署失敗的問題排查

Mac/Windows筆記本受不了,嗡嗡嗡地叫着,如上圖所示。點選檢視詳情:

IDEA使用插件JRebel熱部署失敗的問題排查

原來是JRebel熱部署插件失效。

為什麼失敗?點選 IDEA 右下角的感歎号:

IDEA使用插件JRebel熱部署失敗的問題排查

檢視失敗的具體原因:

IDEA使用插件JRebel熱部署失敗的問題排查

詳細的錯誤堆棧資訊:

com.sun.jdi.IncompatibleThreadStateException
java.lang.RuntimeException: com.sun.jdi.IncompatibleThreadStateException
  at com.zeroturnaround.jdi.util.DebuggerIntegration.classForName(DebuggerIntegration.java:806)
  at com.zeroturnaround.jdi.util.DebuggerIntegration.createArray(DebuggerIntegration.java:771)
  at com.zeroturnaround.jdi.util.DebuggerIntegration._boxArguments(DebuggerIntegration.java:522)
  at com.zeroturnaround.jdi.util.DebuggerIntegration.invokeMethod(DebuggerIntegration.java:512)
  at com.zeroturnaround.jdi.JRObjectReference$1.invoke(JRObjectReference.java:169)
  at com.zeroturnaround.jdi.util.JRWrappedCall.invoke(JRWrappedCall.java:52)
  at com.zeroturnaround.jdi.JRObjectReference.invokeMethod(JRObjectReference.java:175)
  at com.sun.tools.jdi.ObjectReferenceImpl$$$jr.invokeMethod(<generated>:60000)
  at com.intellij.debugger.engine.DebugProcessImpl$3.invokeMethod(DebugProcessImpl.java:1162)
  at com.intellij.debugger.engine.DebugProcessImpl$InvokeCommand.a(DebugProcessImpl.java:1091)
  at com.intellij.debugger.engine.DebuggerManagerThreadImpl.startLongProcessAndFork(DebuggerManagerThreadImpl.java:187)
  at com.intellij.debugger.engine.DebugProcessImpl$InvokeCommand.a(DebugProcessImpl.java:1023)
  at com.intellij.debugger.engine.DebugProcessImpl$InvokeCommand.startInternal(DebugProcessImpl.java:989)
  at com.intellij.debugger.engine.DebugProcessImpl$InvokeCommand.start(DebugProcessImpl.java:930)
  at com.intellij.debugger.engine.DebugProcessImpl.invokeInstanceMethod(DebugProcessImpl.java:1164)
  at com.intellij.debugger.engine.DebuggerUtils.getValueAsString(DebuggerUtils.java:123)
  at com.intellij.debugger.ui.tree.render.ToStringCommand.action(ToStringCommand.java:39)
  at com.intellij.debugger.engine.DebuggerManagerThreadImpl$3.contextAction(DebuggerManagerThreadImpl.java:218)
  at com.intellij.debugger.engine.events.SuspendContextCommandImpl.contextAction(SuspendContextCommandImpl.java:48)
  at com.intellij.debugger.engine.events.SuspendContextCommandImpl.action(SuspendContextCommandImpl.java:73)
  at com.intellij.debugger.engine.events.DebuggerCommandImpl.run(DebuggerCommandImpl.java:47)
  at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:147)
  at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:43)
  at com.intellij.debugger.impl.InvokeThread.a(InvokeThread.java:155)
  at com.intellij.debugger.impl.InvokeThread.access$100(InvokeThread.java:32)
  at com.intellij.debugger.impl.InvokeThread$WorkerThreadRequest.run(InvokeThread.java:61)
  at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:330)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)
Caused by: com.sun.jdi.IncompatibleThreadStateException
  at com.sun.tools.jdi.InvokableTypeImpl.invokeMethod(InvokableTypeImpl.java:116)
  at com.zeroturnaround.jdi.util.DebuggerIntegration.classForName(DebuggerIntegration.java:802)
  ... 31 more