模块化OpenJDK11 Java映像在Linux上找不到动态库(例如libjava.so)

时间:2019-02-21 15:18:08

标签: java linux jlink

我已经在Windows 10上使用OpenJDK 11.0.2编译了模块化Java应用程序。我已经下载了Linux OpenJDK 11.0.2 jmods,并使用它们来使用jlink创建运行时映像。我已将映像复制到CentOS 6.10 VM,并且如果尝试启动Java(jlink生成的映像的bin文件夹中的一个),它将失败,提示“错误:找不到libjava.so”。 libjava.so文件位于运行时映像的lib文件夹中。如果我将Java可执行文件移至/ usr / bin并将libjava.so移至/ usr / lib,它将抱怨找不到其他.so文件,因此我想这意味着它希望在以下目录中找到lib文件夹的内容/ usr / lib目录。在Windows上没有这样的问题(即如果我使用Windows jmod文件创建映像)。我不愿意通过创建一个安装脚本来解决这个问题,该脚本创建十分之一的符号链接,但是我想不出任何其他解决方案。我还尝试定义一个指向[运行时图像] / bin文件夹的$ JAVA_HOME变量,但是它仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

我进行了更多测试,并且找到了导致此错误行为的原因。真正的问题是我使用的输出路径(即--output选项的值)以名为“ bin”的目录结尾,这显然导致Java找不到所需的动态库,也许是因为它试图找到它们相对于jlink生成的bin文件夹。 因此,例如“ --output bin”或“ --output dist / bin”无效,而例如“ --output dist”或“ --output bin / dist”有效。