我正在用sbt構建一個Scala項目並使用sbt-assembly插件創建了一個胖罐子。我可以通過將以下內容添加到build.sbt
來添加非託管罐(如Sigar罐)。在使用sbt程序集進行Scala項目時在jar中包含Hyperic Sigar庫
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
然而,當我嘗試運行此,我得到以下錯誤,因爲*.so
庫不是在罐子包括在內。
no libsigar-amd64-linux.so in java.library.path
org.hyperic.sigar.SigarException: no libsigar-amd64-linux.so in java.library.path
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.hyperic.sigar.ptql.SigarProcessQuery.create(Ljava/lang/String;)V
at org.hyperic.sigar.ptql.SigarProcessQuery.create(Native Method)
at org.hyperic.sigar.ptql.ProcessQueryFactory.getQuery(ProcessQueryFactory.java:66)
at org.hyperic.sigar.ptql.ProcessFinder.findSingleProcess(ProcessFinder.java:44)
我想包括類庫在lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
,他們需要被鏈接到一個目錄中的jar文件裏的類路徑。我知道的唯一的方式做一個這樣的映射是:
resourceDirectory in Compile <<=
baseDirectory{ _/"lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
這將導致*.so
庫被添加到根的jar,但沒有一個特定的目錄。我如何指定資源映射從lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
映射到我的jar中類路徑中的目錄?我想要做什麼的術語?
你爲什麼不使用「org.fusesource」%「sigar」%「1.6.4」classifier(「native」)的任何特定原因? – OlegYch 2013-03-03 18:26:34
@OlegYch,我在'build.sbt'中更改爲使用'libraryDependencies + =「org.fusesource」%「sigar」%「1.6.4」',而且我仍然收到相同的錯誤。 – 2013-03-20 12:01:54