首页 > 解决方案 > Jpostal Expander 和 Parser 不在 java.library.path Jni 中

问题描述

我正在尝试执行 openvenues-jpostal 包,但我遇到了这个错误(经过大量工作来构建和编译来自 libpostal 的所有内容!!)。我所做的是:

安装 libpostal

构建 jpostal (./gradlew assemble) -> 这给了我 jpostal.jar

将 jpostal.jar 复制到我的项目中的 lib -> 这让我将 com.mapzen.jpostal.AddressExpander 导入到我的项目的一个类中

还从 src/main/jniLibs 获得了 .so 文件。我将 jniLibs 文件复制到我的项目根目录中,如图所示。 项目结构

当我尝试执行其中一个示例(解析器和扩展器)时,结果如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jpostal_expander in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at com.mapzen.jpostal.AddressExpander.<clinit>(AddressExpander.java:7)

AddressExpander.java 类在 AddressExpander.java 下面给出

我的java类在下面给出

import java.io.IOException;
import com.mapzen.jpostal.AddressParser;
import com.mapzen.jpostal.ParsedComponent;

public class MyAddressParser {
    public static void main(String[] args) throws IOException {
        System.setProperty("java.library.path", "/jniLibs");

        AddressParser p = AddressParser.getInstance();
        ParsedComponent[] components = p.parseAddress(
                "The Book Club 100-106 Leonard St, Shoreditch, London, Greater London, EC2A 4RH, United Kingdom");
        for (ParsedComponent c : components) {
            System.out.printf("%s: %s\n", c.getLabel(), c.getValue());
        }
    }
}

任何帮助。我在 Windows 上工作,但我需要在 Linux 中部署

标签: javaeclipsemavenjava-native-interface

解决方案


推荐阅读