gpt4 book ai didi

java - 无法在 LInux 中加载依赖的 SO 文件

转载 作者:行者123 更新时间:2023-11-30 03:13:43 25 4
gpt4 key购买 nike

我是 Linux 新手。我正在尝试使用 Java 在 Ubuntu 中加载 SO 文件。我在java方法“System.load(/home/ab/Downloads/libtesseract.so)”中指定的文件加载正常,但找不到与“libtesseract.so”放置在同一位置的依赖so文件。这是我收到的错误消息。错误:UnSatisfiedLinkError 并表示找不到“liblept.so.4”。该so文件与libtesseract.so放在同一位置。当我将“liblept.so.4”放入“/lib”中时。它能够加载这个so文件。所以我的理解是,for,并不是让java去加载依赖的so。它必须由ubuntu加载。因此,我尝试了一个简单的应用程序,通过使用 so 文件的位置设置 PATH 变量来加载它。并将java代码导出到一个jar中,并尝试从终端运行这个jar文件,因为路径变量对于整个系统来说不是持久的。效果很好。因此,我尝试使用下面的代码以编程方式执行相同的操作,但它不起作用。请指教。 TIA

代码:

    ProcessBuilder pb = new ProcessBuilder("/bin/sh");
Map<String, String> envMap = pb.environment();
envMap.put("LD_LIBRARY_PATH", "/home/ab/Downloads");
envMap.put("PATH", "/home/ab/Downloads");
Set<String> keys = envMap.keySet();
for(String key:keys)
{
System.out.println(key+" ==> "+envMap.get(key));
}
System.load("/home/ab/Downloads/libtesseract.so");

最佳答案

据我所知,你不能真正“即时”修改 Java 中的环境变量。这意味着您应该在运行 java 之前设置 LD_LIBRARY_PATH 和 PATH。

关于java - 无法在 LInux 中加载依赖的 SO 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119910/

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