gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:38 25 4
gpt4 key购买 nike

我在 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 文件创建图像)。我不愿意通过创建一个创建十分之一符号链接(symbolic link)的安装脚本来解决这个问题,但我想不出任何其他解决方案。我也尝试定义一个指向 [run-time image]/bin 文件夹的 $JAVA_HOME 变量,但它仍然不起作用。

最佳答案

我做了一些更多的测试,我找到了这种不当行为的原因。真正的问题是我使用的输出路径(即 --output 选项的值)以名为“bin”的目录结尾,这显然导致 Java 找不到它需要的动态库,也许是因为它试图相对于 jlink 生成的 bin 文件夹定位它们。因此,例如“--output bin”或“--output dist/bin”不起作用,而例如“--output dist”或“--output bin/dist”起作用。

关于java - 模块化 OpenJDK11 Java 镜像在 Linux 上找不到动态库(例如 libjava.so),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com