作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!