【问题标题】:Codename One & SQLite consecutive tests & receiving java.lang.UnsatisfiedLinkError org.sqlite.NativeDB._open(Ljava/lang/String;I)V exceptionCodename One & SQLite 连续测试 & 接收 java.lang.UnsatisfiedLinkError org.sqlite.NativeDB._open(Ljava/lang/String;I)V 异常
【发布时间】:2019-06-04 21:15:10
【问题描述】:

我正在尝试使用代号 1 运行连续测试。

第一个测试打开模拟器并访问一个 sqlite 数据库并返回 true 并关闭该模拟器。下一个测试打开另一个模拟器并运行该测试,但是这个不访问数据库,所以我假设为什么该测试也返回 true。

然而,第三个测试确实访问了数据库,这就是发生异常的地方。

 [java] [EDT] 0:0:0,949 - Exception: java.lang.UnsatisfiedLinkError - org.sqlite.NativeDB._open(Ljava/lang/String;I)V
 [java] java.lang.UnsatisfiedLinkError: Native Library C:\Users\cocoa\AppData\Local\Temp\sqlite-3.7.151-amd64-sqlitejdbc.dll already loaded in another classloader
 [java] java.lang.UnsatisfiedLinkError: org.sqlite.NativeDB._open(Ljava/lang/String;I)V

我已经四处搜索,我假设它正在发生,因为 .dll 没有被卸载并且测试正在尝试再次加载它。有没有办法卸载 .dll 或解决方法,以便连续测试工作?

我正在使用 sqlite-jdbc-3.23.1.jar(最新版本)

【问题讨论】:

    标签: java sqlite codenameone


    【解决方案1】:

    这是这里提到的一个已知问题:https://github.com/codenameone/CodenameOne/issues/2175

    很遗憾,我们修复它的尝试失败了。这是确切的原因。 SQLite 插件不能很好地与类加载器配合使用。

    【讨论】:

    • 感谢您的回答。有解决方法吗?在下一次测试加载之前完全关闭模拟器的方法?我在运行和重新运行模拟器时从来没有遇到过问题,只有在测试进行时才会出现问题。
    • 没有。我们也许能够增强测试运行器以支持生成新的 JVM 实例,这可能会修补它。不幸的是,我们人手不足。如果您想将此作为一个选项实现(带有启用标志),您可能会更改 github.com/codenameone/CodenameOne/blob/master/Ports/JavaSE/src/… 并提交拉取请求
    • 我可能会调查一下。谢谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-06-10
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多