no leveldbjni64-1.8 in java.library.path

在抽取以太坊Java版本的Trie樹部分時,遇到了一個問題:java

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in java.library.path, no leveldbjni in java.library.path]
    at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
    at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
    at org.fusesource.leveldbjni.JniDBFactory.<clinit>(JniDBFactory.java:48)
    at Test.main(Test.java:13)

參考fusessource的leveldb的README才解決這個問題git

只須要把leveldbjni-win64-1.8.jar導入工程便可(應爲在win64下運行的)github

設置項目maven依賴:maven

<dependency>
    <groupId>org.fusesource.leveldbjni</groupId>
    <artifactId>leveldbjni-win64</artifactId>
    <version>99-master-SNAPSHOT</version>
</dependency>

<dependency>
      <groupId>org.fusesource.leveldbjni</groupId>
      <artifactId>leveldbjni</artifactId>
      <version>99-master-SNAPSHOT</version>
</dependency>

我用的Gradle管理項目,在項目build.gradle的dependencies中添加gradle

compile "org.fusesource.leveldbjni:leveldbjni:1.8"
compile "org.fusesource.leveldbjni:leveldbjni-win64:1.8"

兩行,而後更新項目便可ui

 

參考:https://github.com/fusesource/leveldbjnispa

ps. 什麼是java.library.path.net

Java通常使用兩個path:classpath 和 java.library.pathcode

classpath是指向jar包的位置blog

java.library.path是非java類包的位置如(dll,so),java.library.path能夠經過System.getPropertu("java.library.path")查看。

public static void main(String[] args){
  System.out.println("java.library.path: ");              
  System.out.println(System.getProperty("java.library.path")); }

輸出爲:

java.library.path: 
D:\Java\jdk1.8.0_91\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/Jav。。。。
相關文章
相關標籤/搜索