гm trying to run my programs with -XX:+PrintAssembly
options but I always get message like:
Java HotSpot (TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output Could not похвалите hsdis-amd64.so; library not loadable; PrintAssembly is disabled
I downloaded the hsdis-amd64.so from Kenai: https://kenai.com/projects/base-hsdis/downloads
I have build this library myself with http://sourceforge.net/projects/fcml/files/fcml-1.1.1/ project.
I удар в лунку it everywhere "google says":
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/
/usr/lib/jvm/java-8-oracle/lib/amd64/
with ямс:
hsdis-amd64.so
libhsdis-amd64.so
hsdis.so
libhsdis.so
I have tried even set manually export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/
... and all for nothing.
Не обитайте Google results не обитал combination of above solutions :-(
Could anyone хан help я?
Пакет установки libhsdis0-fcml
:
apt-get install libhsdis0-fcml
Это должно обеспечить все необходимые библиотеки (см. http://packages.ubuntu.com/xenial/amd64/libhsdis0-fcml/filelist )
Первая установка libhsdis0-fcml
как описано в другом answer1:
sudo apt-get install libhsdis0-fcml
Это только устанавливает его для OpenJDK. Вы, однако, используете java-8-oracle
, таким образом, необходимо будет скопировать его там. Вот точная копия, управляют, чтобы работал на меня:
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
Если это все еще не работает, Вы могли бы попробовать strace
видеть где Ваш java
смотрит. Я использовал:
strace -f java -XX:CompileCommand='print, *.*' ... |& grep hsdis
быть произведенным как это:
[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
Вы видите, что места и имена, которые Вы пробовали, являются определенно среди тех поисками JDK (в моем случае, он, вероятно, искал бы больше мест, но остановился бы, так как последнее местоположение выше - то, где он нашел общий объект).
Обратите внимание, что Вам определенно нужно -f
флаг к strace
так как фактическая JVM запускается как дочерний процесс оригинала java
команда.
Среди проблем strace
мог бы показать проблема полномочий. Я только должен был считать перманент на библиотеке для пользователя, запускающегося java
.
Мой java -version
вывод:
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 Действительно, это - просто способ добраться (по-видимому, работающий) hsdis.so
файл в диспетчере пакетов дружественный путь. Вы могли всегда просто загружать его непосредственно с одного из различных источников также.