Installieren Sie zuerst libhsdis0-fcmlwie in der anderen Antwort 1 beschrieben :
sudo apt-get install libhsdis0-fcml
Dies installiert es nur für OpenJDK. Sie verwenden jedoch, java-8-oracleso dass Sie es dort kopieren müssen. Hier ist der genaue Kopierbefehl, der bei mir funktioniert hat:
sudo cp /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/hsdis-amd64.so /usr/lib/jvm/java-8-oracle/jre/lib/amd64/hsdis-amd64.so
Wenn das immer noch nicht funktioniert, können Sie versuchen, stracezu sehen, wo Sie javasuchen. Ich benutzte:
strace -f java -XX:CompileCommand='print, *.*' ... |& grep hsdis
So erhalten Sie die Ausgabe:
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libhsdis-amd64.so", O_RDONLY <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libhsdis-amd64.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libhsdis-amd64.so", O_RDONLY|O_NONBLOCK <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/hsdis-amd64.so", O_RDONLY <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/hsdis-amd64.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/hsdis-amd64.so", O_RDONLY|O_NONBLOCK <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/hsdis-amd64.so", O_RDONLY <unfinished ...>
[pid 10783] open("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/hsdis-amd64.so", O_RDONLY|O_CLOEXEC) = 14
Sie können sehen, dass die Orte und Namen, die Sie ausprobiert haben, definitiv zu den von JDK durchsuchten gehören (in meinem Fall hätte es wahrscheinlich mehr Orte durchsucht, aber angehalten, da sich der letzte Ort oben dort befindet, wo das gemeinsam genutzte Objekt gefunden wurde).
Beachten Sie, dass Sie das -fFlag unbedingt benötigen , straceda die eigentliche JVM als untergeordneter Prozess des ursprünglichen javaBefehls gestartet wird .
Unter den stracemöglicherweise aufgedeckten Problemen befindet sich ein Berechtigungsproblem. Ich brauchte nur Leserechte für die Bibliothek, um den Benutzer zu starten java.
Meine java -versionAusgabe:
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
1 In Wirklichkeit ist dies nur eine Möglichkeit, eine (vermutlich funktionierende) hsdis.soDatei paketmanagerfreundlich abzurufen. Sie können es auch jederzeit direkt von einer der verschiedenen Quellen herunterladen.