Installieren Sie zuerst libhsdis0-fcml
wie in der anderen Antwort 1 beschrieben :
sudo apt-get install libhsdis0-fcml
Dies installiert es nur für OpenJDK. Sie verwenden jedoch, java-8-oracle
so 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, strace
zu sehen, wo Sie java
suchen. 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 -f
Flag unbedingt benötigen , strace
da die eigentliche JVM als untergeordneter Prozess des ursprünglichen java
Befehls gestartet wird .
Unter den strace
möglicherweise aufgedeckten Problemen befindet sich ein Berechtigungsproblem. Ich brauchte nur Leserechte für die Bibliothek, um den Benutzer zu starten java
.
Meine java -version
Ausgabe:
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.so
Datei paketmanagerfreundlich abzurufen. Sie können es auch jederzeit direkt von einer der verschiedenen Quellen herunterladen.