我试图找出在使用my(C)程序嵌入Java 9时要传递给链接器的文件的标准化位置。即libjvm.so
(Linux / Solaris)和libjvm.dylib
(macOS)的“正确”路径。这样我的构建脚本等可以在未来安全。
Java 9改变了Java安装的布局(JEP 220),以使文件布局标准化,但我看到的所有文档不正确描述了Linux和MacOS上的Java 9的Oracle和OpenJDK版本中的libjvm
共享库。
那么,是否有更新的权威文档?
JEP 220(声称是“已发送”,作为{9}}的一部分,是Java 9的一部分)说:
Linux,macOS和Solaris上的lib目录包含运行时系统的动态链接本机库,就像今天一样。这些名为libjvm.so或libjvm.dylib的文件可能被嵌入运行时系统的程序链接。
(在几个相关的错误跟踪器问题和网络上重复了类似的描述。)
但该描述并未描述当前(最终)版本。相反,它们似乎都将动态库放在lib/server/
中,而不是lib/
。
(OpenJDK,至少在Ubuntu上,与JSR 376: JavaTM Platform Module System中描述的布局有额外的偏差。)
请注意,我只对链接完整的JDK安装感兴趣,例如:从Oracle或OpenJDK获得。我不会构建自己的安装,也不会在我的应用程序中分发java运行时库的副本。