【问题标题】:java.lang.UnsatisfiedLinkError: org.sqlite.core.nativeDB.open()java.lang.UnsatisfiedLinkError: org.sqlite.core.nativeDB.open()
【发布时间】:2015-01-10 17:54:31
【问题描述】:

我已经构建了一个使用 SQLite (sqlite-jdbc-3.8.7.jar) 的 Java 应用程序,并将所有内容打包到一个 jar 文件中。在 windows 上运行 jar 文件可以按预期工作,但是,尝试在 Ubuntu Server 14.04 上运行它已经变成了一项艰巨的任务!我在 VirtualBox 中组装了一个全新的虚拟机进行测试。我安装了 Java (sudo apt-get install default-jre) 并尝试从存储库和下载 tar 并编译安装 SQLite。 SQLite 安装得很好,因为我可以从终端访问它。我在我的主目录中创建了一个新的子目录并复制了我的应用程序 jar 文件。然后从终端运行命令: sudo java -jar .jar 并收到 java.lang.unsatisfiedlinkerror。请参阅所附图像,还必须做些什么才能使其在 Ubuntu 上运行?任何帮助将不胜感激!

【问题讨论】:

    标签: java sqlite ubuntu


    【解决方案1】:

    好吧,我有类似的问题,我不得不恢复到 sqlite-jdbc-3.7.2.jar 包,因为新包中的驱动程序由于某种原因在我的 64 位 linux 下无法工作(dreamhost 所谓的 vps ) 服务器。较新的软件包在 Windows 8.1 x64 中没有问题。我还必须将 tmp 目录移到家中 (System.setProperty("java.io.tmpdir", "/home/username/");)。

    【讨论】:

      【解决方案2】:

      我有类似的问题并恢复为 sqlite-jdbc-3.7.2 为我工作(Ubuntu 14.04 32bits)

      【讨论】:

      • 是的,我使用 maven 打包到我的 jars 中,我也必须恢复到 3.7.2 依赖项。
      【解决方案3】:

      Sqlite 将本机库写入 tmpdir 并尝试使用它。如果 tmp 目录位于挂载 noexec 的文件系统上,这将失败并可能会显示您所看到的错误。

      避免这种情况的一种方法是按照其他答案指出的那样设置 java tmpdir。另一个是从你的 tmp fs 中删除 noexec。

      检查:

      $ mount | grep /tmp
      tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,size=6291456k)
      

      要更改此设置,请编辑 /etc/fstab,从 /tmp 行中删除 noexec,然后重新启动或重新挂载 /tmp

      $ mount -o remount /tmp
      

      (请注意,noexec 被认为是一项安全功能,因为它可以防止流氓应用程序完全按照 SQLite 在这里试图做的事情)

      【讨论】:

      • noexec 标志的存在可能是有原因的。您可以使用sudo mount -o remount,exec /tmp 临时重新挂载/tmp
      【解决方案4】:

      将此添加到您的代码中,看看您的 tmpdir 是否有问题...

           final File tmp = new File(System.getProperty("java.io.tmpdir")); 
       if (!tmp.exists() || !tmp.isDirectory() || !tmp.canRead() || !tmp.canWrite()){
           System.err.println("@PFTcreateDB - Issue with java.io.tmpdir");
       }
      

      这可能表示缺少 tmp 或权限不正确。

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 2015-03-29
        • 2013-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多