如何修复'sqlite-3.7.2-sqlitejdbc.dll:无法在AMD 64位平台上加载IA 32位.dll'

时间:2019-08-26 05:57:01

标签: java sqlite spatialite

我想加载sqlite空间函数,所以我执行 stmt.execute(“ SELECT load_extension('mod_spatialite')”); 然后我得到错误: java.lang.UnsatisfiedLinkError:C:\ Users \ 17222 \ AppData \ Local \ Temp \ sqlite-3.7.2-sqlitejdbc.dll:无法在AMD 64位平台上加载IA 32位.dll

我尝试删除sqlite-3.7.2-sqlitejdbc.dll并下载64位函数并放入文件。但是当我再次运行代码时,我发现sqlite-3.7.2-sqlitejdbc.dll (32位版本)将由该代码生成,并将涵盖下载内容。

事实上,我已经在同一台机器上成功运行过它。它可以执行一些空间sql函数,但是当我新建一个项目并重复执行该操作时,就会出现错误。

这里是一些代码:

    String path = System.getProperty("java.library.path");
    System.out.println(path);
    // 加载JDBC
    Class.forName("org.sqlite.JDBC");


    Connection conn = null;

    try {

        // absolutely required by SpatiaLite
        SQLiteConfig config = new SQLiteConfig();
        config.enableLoadExtension(true);

        // create a database connection
        conn = DriverManager.getConnection("jdbc:sqlite:C:\\sqlite-tools-win32-x86-3290000\\OrgDBForCheck.db3",
                config.toProperties());
        Statement stmt = conn.createStatement();
        stmt.setQueryTimeout(30);

        // loading SpatiaLite
        stmt.execute("SELECT load_extension('mod_spatialite')");

        ResultSet rs = stmt.executeQuery("SELECT aswkt(geometry)\n" +
                " FROM AD_HP\n" +
                "where X(Geometry)>120\n");

1 个答案:

答案 0 :(得分:0)

问题是您的sqlite jar文件仅包含32位.dll 您可以检查32位和64位版本是否都有两个.dll。

这是下载正确的驱动程序jar文件https://jakearchibald.github.io/svgomg/

的链接