Klocwork plugin failed to run in eclipse with error "java.lang.UnsatisfiedLinkError: no sqlite_jni in java.library.path"

Klocwork plugin failed to run in eclipse with error "java.lang.UnsatisfiedLinkError: no sqlite_jni in java.library.path"

我刚刚为 Eclipse 安装了 Klocwork 插件。但是当我开始扫描项目时,出现以下错误:

java.lang.UnsatisfiedLinkError: no sqlite_jni in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.klocwork.desktopdb.SqliteJniLoader.initDefaultLibraries(SqliteJniLoader.java:28)
    at com.klocwork.desktopdb.SqliteAgent.<clinit>(SqliteAgent.java:21)
    at com.klocwork.desktopdb.migration.MigrateDesktopDb.<init>(MigrateDesktopDb.java:48)
    at com.klocwork.desktopdb.migration.MigrateDesktopDb.migrate(MigrateDesktopDb.java:44)
    at com.klocwork.desktopdb.KwlpProblemsStorageUtil.migrateOrCreateStorage(KwlpProblemsStorageUtil.java:32)
    at com.klocwork.kwcheck.commands.AbstractCommand.convertToDB(AbstractCommand.java:82)
    at com.klocwork.kwcheck.commands.BuildCommand.execute(BuildCommand.java:110)
    at com.klocwork.util.CommandLineParser2.parse(CommandLineParser2.java:360)
    at com.klocwork.kwcheck.KwCheckMain.main(KwCheckMain.java:22)
kwcheck: WARNING: Exception occured in java application
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true -Djava.library.path=".;C:\Program Files (x86)\myLib\win32"
Exception in thread "main" 

我发现了几个有类似问题的线程:

http://thelogofthewook.blogspot.de/2011/12/updating-problems-myproject-no.html

https://developer.klocwork.com/community/forums/klocwork-general/user-tools/eclipse-plugin-error

他们都提到了一些 32 位/64 位问题。但我使用的是 32 位 Eclipse + 32 位 JVM。

正如我所检查的,插件的 liblib64 文件夹中分别存在 2 个不同的 sqlite_jni.dll 文件。所以我猜没有文件丢失。

那有什么问题吗?

目前,我正在尝试通过以下方式解决问题:

  1. 找出插件如何定位其本机库。
  2. 如何为插件配置 java.library.path。

稍有耐心就会有回报...

我仔细阅读了错误信息,它清楚地写着:

Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true -Djava.library.path=".;C:\Program Files (x86)\myLib\win32"

所以我突然想起我曾经这样设置一个环境变量:

_JAVA_OPTIONS = -Djava.net.preferIPv4Stack=true -Djava.library.path=".;C:\Program Files (x86)\myLib\win32"

我把它改成下面的样子后,就开始工作了。

_JAVA_OPTIONS = -Djava.net.preferIPv4Stack=true

以及一些背景参考资料: http://examples.javacodegeeks.com/java-basics/java-library-path-what-is-it-and-how-to-use/