[英]jvisualvm: Software caused connection abort: socket write error
當我想用jvisualvm 1.3.8描述從eclipse開始的java程序時,我在eclipse控制台中收到錯誤信息:
Software caused connection abort: socket write error.
當我從命令行控制台啟動沒有eclipse(java -jar ...)的程序時,也會發生這種情況。 我從JDK 1.8.0_20測試了jvisualvm並下載了最新版本1.3.8。 這是堆棧跟蹤:
Profiler Agent: Waiting for connection on port 5140 (Protocol version: 15)
Profiler Agent: Established connection with the tool
Profiler Agent: Local accelerated session
Profiler Agent: Connection with agent closed
Profiler Agent Error: Exception when trying to send response or command to client:
java.net.SocketException: Software caused connection abort: socket write error
*** Profiler engine warning: class load hook invoked at inappropriate time for java.lang.Throwable$PrintStreamOrWriter, loader = null
*** This class will not be instrumented unless you re-run the instrumentation command
*** Please report this problem to feedback@profiler.netbeans.org
=============================== Stack trace =====================
*** Profiler engine warning: class load hook invoked at inappropriate time for java.lang.Throwable$WrappedPrintStream, loader = null
*** This class will not be instrumented unless you re-run the instrumentation command
*** Please report this problem to feedback@profiler.netbeans.org
=============================== Stack trace =====================
*** Profiler engine warning: class load hook invoked at inappropriate time for java.util.IdentityHashMap$KeySet, loader = null
*** This class will not be instrumented unless you re-run the instrumentation command
*** Please report this problem to feedback@profiler.netbeans.org
=============================== Stack trace =====================
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.util.IdentityHashMap.keySet(IdentityHashMap.java:976)
at java.util.Collections$SetFromMap.<init>(Collections.java:5512)
at java.util.Collections.newSetFromMap(Collections.java:5496)
at java.lang.Throwable.printStackTrace(Throwable.java:650)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at java.lang.Throwable.printStackTrace(Throwable.java:634)
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at java.lang.Throwable.printStackTrace(Throwable.java:634)
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at org.netbeans.lib.profiler.server.ProfilerServer.handleIOExceptionOnSend(ProfilerServer.java:1698)
at org.netbeans.lib.profiler.server.ProfilerServer.sendComplexCmdToClient(ProfilerServer.java:706)
at org.netbeans.lib.profiler.server.ProfilerInterface.sendRootClassLoadedCommand(ProfilerInterface.java:1418)
at org.netbeans.lib.profiler.server.ProfilerInterface.access$900(ProfilerInterface.java:70)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.initiateInstrumentation(ProfilerInterface.java:232)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.run(ProfilerInterface.java:137)
=============================== End stack trace =================
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at java.lang.Throwable.printStackTrace(Throwable.java:634)
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at org.netbeans.lib.profiler.server.ProfilerServer.handleIOExceptionOnSend(ProfilerServer.java:1698)
at org.netbeans.lib.profiler.server.ProfilerServer.sendComplexCmdToClient(ProfilerServer.java:706)
at org.netbeans.lib.profiler.server.ProfilerInterface.sendRootClassLoadedCommand(ProfilerInterface.java:1418)
at org.netbeans.lib.profiler.server.ProfilerInterface.access$900(ProfilerInterface.java:70)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.initiateInstrumentation(ProfilerInterface.java:232)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.run(ProfilerInterface.java:137)
=============================== End stack trace =================
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at org.netbeans.lib.profiler.server.ProfilerInterface.classLoadHook(ProfilerInterface.java:912)
at java.lang.Throwable.printStackTrace(Throwable.java:643)
at org.netbeans.lib.profiler.server.ProfilerServer.handleIOExceptionOnSend(ProfilerServer.java:1698)
at org.netbeans.lib.profiler.server.ProfilerServer.sendComplexCmdToClient(ProfilerServer.java:706)
at org.netbeans.lib.profiler.server.ProfilerInterface.sendRootClassLoadedCommand(ProfilerInterface.java:1418)
at org.netbeans.lib.profiler.server.ProfilerInterface.access$900(ProfilerInterface.java:70)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.initiateInstrumentation(ProfilerInterface.java:232)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.run(ProfilerInterface.java:137)
=============================== End stack trace =================
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1877)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeBytes(ObjectOutputStream.java:1985)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(ObjectOutputStream.java:2168)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(ObjectOutputStream.java:2007)
at java.io.ObjectOutputStream.writeUTF(ObjectOutputStream.java:869)
at org.netbeans.lib.profiler.wireprotocol.RootClassLoadedCommand.writeObject(RootClassLoadedCommand.java:159)
at org.netbeans.lib.profiler.wireprotocol.WireIO.sendComplexCommand(WireIO.java:301)
at org.netbeans.lib.profiler.server.ProfilerServer.sendComplexCmdToClient(ProfilerServer.java:703)
at org.netbeans.lib.profiler.server.ProfilerInterface.sendRootClassLoadedCommand(ProfilerInterface.java:1418)
at org.netbeans.lib.profiler.server.ProfilerInterface.access$900(ProfilerInterface.java:70)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.initiateInstrumentation(ProfilerInterface.java:232)
at org.netbeans.lib.profiler.server.ProfilerInterface$InitiateProfilingThread.run(ProfilerInterface.java:137)
Profiler Agent Error: Exception when handling command from client:
java.net.SocketException: Software caused connection abort: recv failed
Profiler Agent: Connection with agent closed
在此之后,我的應用程序打開端口5140以進行分析。 我google了很多,找不到任何幫助。 我還寫了另一個簡單的程序,也發生了錯誤。
我能做什么?
我已經遇到過這幾次了。 你運行這個OS平台是什么? 視窗? 還是* nix?
在Windows上,您幾乎肯定需要使用Admin privs運行Eclipse和/或jvisualvm ...我通常設置一個命令提示符,Run As ... Administrator。
在Linux上,您需要以root用戶身份運行Eclipse和/或jvisualvm,或者使用具有匹配或超過運行您要監控的pid的帳戶的權限的帳戶。
這絕對是一個防火牆問題。 如果操作系統沒有問您(Windows),很可能您無權禁用防火牆。 在我的情況下,我最終在另一個盒子上運行了應用程序,我有權允許JVisualVM連接到我的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.