다른 답변 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
패키지 관리자에게 친숙한 방식으로 (아마도 작동하는) 파일 을 얻는 방법입니다. 다양한 소스 중 하나에서 직접 직접 다운로드 할 수도 있습니다.