Najpierw zainstaluj libhsdis0-fcml
zgodnie z opisem w drugiej odpowiedzi 1 :
sudo apt-get install libhsdis0-fcml
Instaluje to tylko dla OpenJDK. Jednak używasz java-8-oracle
, więc musisz go tam skopiować. Oto dokładne polecenie kopiowania, które działało dla mnie:
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
Jeśli to nadal nie działa, możesz spróbować strace
zobaczyć, gdzie java
szukasz. Użyłem:
strace -f java -XX:CompileCommand='print, *.*' ... |& grep hsdis
aby uzyskać wynik w ten sposób:
[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
Widać, że miejsca i nazwy, które próbujesz, zdecydowanie należą do wyszukiwań JDK (w moim przypadku prawdopodobnie przeszukałby więcej miejsc, ale zatrzymał się, ponieważ ostatnia lokalizacja powyżej jest miejscem, w którym znalazł udostępniony obiekt).
Zauważ, że zdecydowanie potrzebujesz -f
flagi, strace
ponieważ faktyczna JVM jest uruchamiana jako proces potomny oryginalnego java
polecenia.
Jednym z problemów, które strace
mogą ujawnić, jest kwestia uprawnień. Potrzebowałem tylko odczytów w bibliotece do uruchomienia użytkownika java
.
Moja java -version
produkcja:
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 Naprawdę jest to tylko sposób na uzyskanie (prawdopodobnie działającego) hsdis.so
pliku w przyjazny dla menedżera pakietów sposób. Zawsze możesz go pobrać bezpośrednio z jednego z różnych źródeł.