程序部署后 JNI 找不到共享库

2024-02-17

将导出的 Java 项目从开发计算机移至生产环境后,我遇到了麻烦。

java项目(一个Eclipse插件)有一个我写的JNI库,它依赖于一个开源库,而这个库又依赖于Boost。我在我的 SLES11 机器上编译了所有内容,包括 Boost,并且该程序可以正常运行。

当我将程序移动到另一台机器时,出现错误:

java.lang.UnsatisfiedLinkError:/path/to/project/lib/libMyJNI.so: libboost_system.so.1.67.0: cannot open shared object file: No such file or directory

我将所需的库复制到同一目录中。ldd libMyJNI.so列出了 20 个依赖项,但解决了所有这些依赖项。

我仍然遇到同样的错误。

我假设java.library.path已正确设置,因为它尝试加载libMyJNI.so并认识到依赖性。

我是否正确地期待如果ldd有效,java应该解决依赖关系吗? 有什么线索吗?

谢谢你!

编辑:这是 ldd 的输出ldd libMyJNI.so

linux-vdso.so.1 =>  (0x00007fffa59ff000)
libboost_system.so.1.67.0 (0x00007fc427bce000)
libboost_filesystem.so.1.67.0 (0x00007fc4279b4000)
libboost_thread.so.1.67.0 (0x00007fc42778f000)
libboost_date_time.so.1.67.0 (0x00007fc42757a000)
libboost_iostreams.so.1.67.0 (0x00007fc42735f000)
libboost_serialization.so.1.67.0 (0x00007fc42710f000)
libboost_chrono.so.1.67.0 (0x00007fc426f06000)
libboost_atomic.so.1.67.0 (0x00007fc426d04000)
libboost_regex.so.1.67.0 (0x00007fc426a00000)
libpcl_common.so.1.8 (0x00007fc42673b000)
libpcl_io.so.1.8 (0x00007fc4263cb000)
libpcl_octree.so.1.8 (0x00007fc425fdc000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fc425c98000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc425a42000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc42582b000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc4254cc000)
librt.so.1 => /lib64/librt.so.1 (0x00007fc4252c3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc4250a6000)
libz.so.1 => /lib64/libz.so.1 (0x00007fc424e8f000)
libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007fc424c86000)
libpcl_io_ply.so.1.8 (0x00007fc424a21000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007fc4247f9000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc427fe8000)

感谢@user2543253 我已经解决了这个问题。我正在为以后的读者(包括我,当我遇到同样的问题时)给出答案。

java.library.path设置正确,因为它可以加载JNI库。其他库(依赖项)必须位于列出的目录中LD_LIBRARY_PATH。因此,在部署软件时,您可以

  • 将依赖项安装在通常存在的位置LD_LIBRARY_PATH or
  • 将目录附加到LD_LIBRARY_PATH在启动插件之前。

ldd可以成功链接库,因为它也在当前目录中查找。所以ldd libMyJNI.so可以成功,同时ldd \path\to\libMyJNI.so可能会失败。在这种情况下,JNI 将不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序部署后 JNI 找不到共享库 的相关文章

  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • Grails 2.3.0 自动重新加载不起作用

    我最近将我们的项目升级到 grails 2 3 0 一切工作正常 除了每当我更改代码时自动重新加载都无法工作的问题 这包括所有项目工件 控制器 域 服务 gsps css 和 javascript 文件 我的旧版本 grails 可以正常工
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 如何通过 Inno Setup for NetBeans 使用自定义 .iss 文件

    我将 Inno Setup 5 与 NetBeans 8 一起使用 并且我已经能够创建一个安装程序来安装该应用程序C users username local appname 但是我希望将其安装在C Programfiles 我如何在 Ne
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false

随机推荐

  • 如何在Excel之外执行vba宏

    我有一个 Excel 电子表格 其中包含大量 VBA 和宏 其中包括一个按钮 如何从Python 例如 在Excel之外执行Excel中的VBA代码 特别是单击按钮并触发其onclick事件 Note 我愿意接受不同语言的答案 例如 C C
  • Sharepoint UserProfileManager 没有管理用户配置文件权限

    我有一个让我有点抓狂的问题 使用 UserProfileManager 作为未经授权的用户 问题 用户没有 管理用户配置文件 权限 但我仍然想使用 UserProfileManager 使用 SPSecurity RunWithElevat
  • 反转 HList 并转换为类?

    我使用 Shapeless 在 Akka 中累积物化值作为 HList 并将其转换为案例类 对于这个问题 您不必了解 Akka 太多 但默认方法将物化值累积为递归嵌套的 2 元组 这并不是很有趣 因此 Shapeless HLists 似乎
  • 通过 Socket 连接使用 PrintWriter 将 PDF 文件打印到打印机

    我必须使用具有特定 IP 地址的打印机打印 pdf 文件 我可以打印特定的文本 但我想打印文件或 html 解析的文本 My Code try Socket sock new Socket 192 168 0 131 9100 PrintW
  • NetFSMountURLSync 无法使用自定义安装点?

    我正在尝试以编程方式挂载一些 WebDAV 和 SMB 共享 并且我想为卷指定除默认名称之外的特定名称 例如 如果我安装 https my sharepoint school edu personal grigutis https my s
  • Android AppWidget 配置 - 在新任务中启动

    我一直在寻找这个 所以我有一个应用程序小部件 它有一个配置活动 我可以在按下应用程序上的按钮时打开该活动 场景是 打开应用程序 使用主页按钮关闭应用程序 选择添加我的小部件 我已经配置了小部件 放置在我的主屏幕上 然后使用小部件上的按钮再次
  • 如何在perl中读取匹配字符串上方的n行?

    假设我有一个文件 xx txt 它包含数据 1 I am here 2 to work in 3 Perl for writing 4 a script for 5 myself 假设我想搜索字符串脚本并想显示三个 上面有几行 我该怎么办
  • int a=1, b=a++; 是否调用未定义的行为?

    Does int a 1 b a 调用未定义的行为 初始化之间没有序列点介入a及其在初始化程序中的访问和修改b 但据我所知 初始化不是对象的 修改 指定初始值设定项来给出对象的 初始值 根据 6 7 8 初始化 第 8 段 初始化器指定存储
  • 可以直接用二进制写程序吗?我怎样才能让计算机执行它?

    我知道这可能看起来很奇怪并且自找麻烦 但我认为体验古代程序员以前经历过的事情是很有趣的 那么如何执行仅用二进制编写的程序呢 假设我知道我在做什么 当然不使用汇编 我只想写一系列像111010111010101010101并执行它 那么我该怎
  • 如何使用 WPF 后台工作者

    在我的应用程序中 我需要执行一系列初始化步骤 这些步骤需要 7 8 秒才能完成 在此期间我的 UI 变得无响应 为了解决这个问题 我在一个单独的线程中执行初始化 public void Initialization Thread initT
  • -XX:+PrintGC 和 -verbose:gc 之间的区别

    我想了解以下之间的区别 XX PrintGC and verbose gc显然这些看起来很相似 本文没有列出verbose gc http www oracle com technetwork articles java vmoptions
  • 如何使用 TFS 构建服务器中的模板运行 NUnit 测试

    我需要使用 TFS Server 2010 中的工作流模板运行 nUnit 测试 我找到了下面所有解释如何配置构建服务器的参考资料 http morten lyhr dk 2008 05 using nunit and ncover wit
  • Error62:在 VBA 脚本中输入文件末尾以搜索目录中包含关键字的文件

    希望有人能够指出我误入歧途的地方 我创建了一个脚本来搜索目录中的所有文件 并返回包含已输入到单元格中的特定关键字的任何文件的文件路径和文件名 该脚本似乎适用于我在桌面上设置的测试文件夹 但是当我尝试搜索包含更多文件的另一个目录时 我收到 输
  • 自定义活动设计器中的参数验证

    我在验证自定义活动的设计器中正常工作时遇到问题 重现该行为的最简单示例如下 我有一个自定义 WF4 活动 其中包含存储在字典中的动态参数集合 Designer typeof DictionaryActivityDesigner public
  • Rand Index函数(聚类性能评估)

    据我所知 python 中没有可用于 Rand Index 的软件包 而对于调整后的 Rand Index 您可以选择使用sklearn metrics adjusted rand score labels true labels pred
  • 获取自己的标头 $Resource AngularJs

    我有 GO 语言的 REST API 和 Angularjs 的前端 但是当我以 Angular 形式获取资源时 我的自定义标头不存在 控制器 Persons query function data headerGetter status
  • 共享元素转换不适用于 Android 中的添加片段

    我观察到共享元素转换仅适用于 替换 方法 有什么方法可以使其与 add 方法一起使用 None
  • 使用php通过android volley发送图像[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在用数据和图像从 android 到 php 发布帖子 我正在 android 中缩小图像并对其进行 base 64 编码 当通过齐射
  • [Firestore][I-FST000001] 无法到达 Firestore 后端

    我已经配置了 Firebase Firestore 但 Firestore 曾返回此错误 Firestore I FST000001 无法到达 Firestore 后端 我正在使用 Swift 4 和 Xcode 9 有什么想法吗 2018
  • 程序部署后 JNI 找不到共享库

    将导出的 Java 项目从开发计算机移至生产环境后 我遇到了麻烦 java项目 一个Eclipse插件 有一个我写的JNI库 它依赖于一个开源库 而这个库又依赖于Boost 我在我的 SLES11 机器上编译了所有内容 包括 Boost 并