他の回答1のlibhsdis0-fcml
説明に従って最初にインストールします。
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検索の中にあることがわかります(私の場合、おそらくもっと多くの場所を検索したでしょうが、上の最後の場所は共有オブジェクトを見つけた場所なので停止しました)。
実際のJVMは元のコマンドの子プロセスとして起動されるため、-f
フラグは必ず必要です。strace
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
パッケージマネージャーに優しい方法で(おそらく動作している)ファイルを取得する方法にすぎません。さまざまなソースの1つから直接ダウンロードすることもできます。