PrintAssembly的java-8-oracle(1.8.0_66)问题“无法加载hsdis-amd64.so”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PrintAssembly的java-8-oracle(1.8.0_66)问题“无法加载hsdis-amd64.so”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2752字,纯文字阅读大概需要4分钟。
内容图文
![PrintAssembly的java-8-oracle(1.8.0_66)问题“无法加载hsdis-amd64.so”](/upload/InfoBanner/zyjiaocheng/896/b1bad30583014167924addde3ba76a65.jpg)
我正在尝试使用-XX:PrintAssembly选项运行我的程序,但我总是得到如下消息:
Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output Could not load
hsdis-amd64.so; library not loadable; PrintAssembly is disabled
我从Kenai下载了hsdis-amd64.so:https://kenai.com/projects/base-hsdis/downloads
我自己用http://sourceforge.net/projects/fcml/files/fcml-1.1.1/项目构建了这个库.
我把它放在“谷歌说”:
/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/
名字:
hsdis-amd64.so
libhsdis-amd64.so
hsdis.so
libhsdis.so
我试过手动导出LD_LIBRARY_PATH = /usr/lib / jvm / java-8-oracle / jre / lib / amd64 / server /
……一切都没有.
没有更多Google结果没有上述解决方案的更多组合:-(
任何人都可以帮助我吗?
解决方法:
首先按照other answer1中的描述安装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搜索的那些(在我的情况下,它可能会搜索更多的地方,但自从上一个位置找到共享对象后停止了).
请注意,您确实需要-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文件的方法.您也可以直接从各种来源之一下载它.
内容总结
以上是互联网集市为您收集整理的PrintAssembly的java-8-oracle(1.8.0_66)问题“无法加载hsdis-amd64.so”全部内容,希望文章能够帮你解决PrintAssembly的java-8-oracle(1.8.0_66)问题“无法加载hsdis-amd64.so”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。