java-8-oracle (1.8.0_66) problem with PrintAssembly “Could not похвалите hsdis-amd64.so”

г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 я?

20
задан 17 December 2015 в 03:37

2 ответа

Пакет установки libhsdis0-fcml:

apt-get install libhsdis0-fcml

Это должно обеспечить все необходимые библиотеки (см. http://packages.ubuntu.com/xenial/amd64/libhsdis0-fcml/filelist )

4
ответ дан 23 November 2019 в 01:54

Первая установка 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 файл в диспетчере пакетов дружественный путь. Вы могли всегда просто загружать его непосредственно с одного из различных источников также.

10
ответ дан 23 November 2019 в 01:54

Другие вопросы по тегам:

Похожие вопросы: