当前位置: 首页 > 知识库问答 >
问题:

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

白泽语
2023-03-14

我在Windows10上使用OpenJDK11.0.2编译了一个模块化Java应用程序。我已经下载了linux OpenJDK11.0.2JMOD,并使用它们使用JLink创建了一个运行时映像。我已经将映像复制到CentOS6.10VM,如果我尝试启动java(jlink生成的映像的bin文件夹中的那个),它会失败,显示“Error:could not find libjava.so”(错误:could not find libjava.so)。libjava.so文件位于运行时映像的lib文件夹中。如果我将java可执行文件移动到/usr/bin,将libjava.so移动到/usr/lib,它会抱怨找不到不同的.so文件,所以我想这意味着它希望在/usr/lib目录中找到lib文件夹的内容。在Windows上没有这样的问题(例如,如果我使用Windows jmod文件创建一个映像)。我不太愿意通过创建一个创建十分之一符号链接的安装脚本来解决这个问题,但是我想不出任何其他的解决方案。我也尝试过定义一个指向[run-time image]/bin文件夹的$JAVA_HOME变量,但仍然不起作用。

共有1个答案

卢聪
2023-03-14

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

 类似资料:
  • 我已经创建了3个文件MongoDbConnect.js、BooksSchema.js、Server.js,并且正在运行VisualStudio。 当我运行节点server.js时,我得到“无法找到模块'/BooksSchema'”错误。booksSchema与所有其他文件位于同一目录中。 MongoDbConnect.js mongoose=require('mongoose') const MO

  • 我正在尝试定义一个Java 9模块。我定义了类似的东西: 然后,我的许多文件开始给我错误,他们找不到一些包。然后我使用了IntelliJ的自动帮助功能,并将其添加到我的模块信息中。java中有几个“requires”语句。所以它变成了这样: 现在IntelliJ显示了我所有的代码,没有错误。但当我在“Maven项目”窗口中单击“编译”(我使用Maven 3.5.3和Oracle JDK 10进行编

  • 我试图将nodejs和npm安装到基于官方wordpress映像的docker映像上,最终安装Gulp。 我的Dockerfile像这样 当我构建映像时,它似乎安装了nodejs,但却失败了 正在设置nodejs(4.8.2~DFSG-1)...update-备选项:在自动模式下使用/usr/bin/nodejs提供/usr/bin/js(js)update-备选项:警告:跳过/usr/share

  • 问题内容: 我最近在计算机上安装了cx_Oracle模块,以连接到远程Oracle数据库服务器。(我身边没有Oracle客户端)。 Python:2.7 x86版 Oracle:版本11.1.X x64 Cx_Oracle:版本5.1.2-11g.win32-py2.7 然后,每次我运行脚本时,脚本都会失败并显示以下消息: ImportError:DLL加载失败:找不到指定的模块。 我想知道是否我

  • 问题内容: 我有以下目录结构: 我尝试在从server.js导出的app.js中调用函数,我这样做: 但是得到错误: 我如何正确包含它? 谢谢。 问题答案: 该路径必须相对于您当前所在的文件。 用

  • 问题内容: 我一直在尝试设置Windows计算机,以便可以使用具有PostGIS扩展名的本地postgreSQL。安装此程序后,我希望能够在本地将geodjango创建一个项目,然后再将其放入云中。我已经在使用SQLite DB的本地计算机上与Django一起工作了一段时间,但是由于下一个项目将部分基于基于坐标的数据,因此我想设置正确的环境。 导入说明:我已经安装了迷你康达在单独的环境中运行。我在