无法在LInux

时间:2015-10-14 08:05:57

标签: java ubuntu-12.04 loading tesseract

我是linux新手。我正在尝试使用Java在Ubuntu中加载SO文件。我在java方法“System.load(/home/ab/Downloads/libtesseract.so)”中指定的文件加载正常,但找不到与“libtesseract.so”位于同一位置的依赖文件。这是我收到的错误消息。错误:UnSatisfiedLinkError并且说“liblept.so.4”无法找到。这个so文件放在与libtesseract.so相同的位置。当我将“liblept.so.4”放在“/ lib”中时。它能够从中加载这样的文件。所以我理解的是,因为它不是因为java加载依赖所以。它必须由ubuntu加载。所以我尝试了一个简单的应用程序来加载它,方法是将PATH变量设置为so文件的位置。并将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");

1 个答案:

答案 0 :(得分:2)

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