Jawaban saya akan sedikit tidak berhubungan, tetapi saya memiliki masalah yang sama saat mencoba membuang utas menggunakan jcmd
. Saya mendapatkan pesan kesalahan yang sama meskipun saya menjalankan jcmd
di bawah akar pengguna.
Anda perlu menjalankan jcmd <pid> Thread.print
di bawah pengguna yang sama dengan proses java memiliki, jika tidak, koneksi Anda akan terputus. Java tidak peduli jika Anda adalah root atau tidak.
Jadi pada dasarnya:
sudo -u <java_process_user> jcmd <pid> Thread.print
Bekerjalah untuk saat ini.
Menambahkan '-XX:+StartAttachListener'
ke argumen jvm memperbaiki masalah.
Masalah serupa dibahas di sini di https://code.google.com/p/jmockit/issues/detail?id=136 dan http://mail.openjdk.java.net/pipermail/macosx-port-dev/2013 -October/006098.html (yang berbicara tentang kemungkinan regresi dalam build jdk7)
Seperti @bbarker, saya mendapatkan kesalahan yang sama tetapi di JDK 1.8.0_161 menggunakan subsistem Linux di Windows 10 ("Bash di Ubuntu di Windows"). Mengonfigurasi plugin Surefire dengan argumen JVM yang disebutkan di atas juga memperbaiki masalah bagi saya:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<argLine>-XX:+StartAttachListener</argLine>
</configuration>
</plugin>
Menjalankan tes dari prompt perintah Windows "normal" berfungsi tanpa yang di atas.