Meine Antwort wird ein wenig unabhängig sein, aber ich hatte das gleiche Problem, als ich versuchte, Threads mit jcmd
zu sichern . Ich habe dieselbe Fehlermeldung erhalten, obwohl ich jcmd
ausgeführt habe unter dem Stamm Benutzer.
Sie müssen jcmd <pid> Thread.print
ausführen unter dem gleichen Benutzer wie der Java-Prozess hat, andernfalls werden Ihre Verbindungen unterbrochen. Java kümmert sich nicht darum, ob Sie root sind oder nicht.
Also im Grunde:
sudo -u <java_process_user> jcmd <pid> Thread.print
Arbeite erst einmal herum.
Hinzufügen von '-XX:+StartAttachListener'
to jvm argument hat das Problem behoben.
Ein ähnliches Problem wird hier unter https://code.google.com/p/jmockit/issues/detail?id=136 und http://mail.openjdk.java.net/pipermail/macosx-port-dev/2013 diskutiert -October/006098.html (die über eine mögliche Regression im jdk7-Build spricht)
Wie bei @bbarker habe ich den gleichen Fehler erhalten, aber auf JDK 1.8.0_161 mit dem Linux-Subsystem in Windows 10 ("Bash on Ubuntu on Windows"). Das Konfigurieren des Surefire-Plugins mit dem oben erwähnten JVM-Argument hat das Problem auch für mich behoben:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<argLine>-XX:+StartAttachListener</argLine>
</configuration>
</plugin>
Das Ausführen der Tests von einer "normalen" Windows-Eingabeaufforderung aus funktioniert jedoch auch ohne das Obige.