我正在使用sbt 0.13并且在sbt下使用leveldbjni本机库时遇到问题(即使问题#358已经解决).一个类似的问题已经被报告为这SBT 0.13应该提供一个解决方案,但它似乎没有.所以我在这里分享我的观察.
我正在UnsatisfiedLinkError使用以下示例应用程序.
build.sbt
name := "example"
version := "0.1"
scalaVersion := "2.10.2"
libraryDependencies += "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.7"
Run Code Online (Sandbox Code Playgroud)build.properties
sbt.version=0.13.0
Run Code Online (Sandbox Code Playgroud)Example.scala
import org.fusesource.leveldbjni.internal._
object Example extends App {
NativeDB.LIBRARY.load() // loading succeeds
new NativeOptions() // UnsatisfiedLinkError under sbt
}
Run Code Online (Sandbox Code Playgroud)我正在使用Oracle JDK 1.7和OS X 10.8.5.run-main Example在sbt下运行示例给出
[error] (run-main) java.lang.UnsatisfiedLinkError: org.fusesource.leveldbjni.internal.NativeOptions.init()V
Run Code Online (Sandbox Code Playgroud)
而运行它
java -cp scala-library.jar:example_2.10-0.1.jar:leveldbjni-all-1.7.jar Example
Run Code Online (Sandbox Code Playgroud)
工作正常.当Scala位于bootclasspath时,应用程序甚至可以成功运行:
java -Xbootclasspath/a:scala-library.jar -cp example_2.10-0.1.jar:leveldbjni-all-1.7.jar Example
Run Code Online (Sandbox Code Playgroud)
任何想法,为什么UnsatisfiedLinkError只有一个sbt?