Bra*_*mos 6 scala sbt sbt-assembly
我正在用sbt构建一个Scala项目,并使用sbt-assembly插件创建一个胖jar.我可以通过添加以下内容来添加非托管jar(例如Sigar jar)build.sbt.
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,我收到以下错误,因为*.sojar不包含库.
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)
Run Code Online (Sandbox Code Playgroud)
我想要包含的库是lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so,它们需要链接到jar中类路径中的目录.我知道做这样的映射的唯一方法是:
resourceDirectory in Compile <<=
baseDirectory{ _ / "lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
Run Code Online (Sandbox Code Playgroud)
这会导致*.so库被添加到jar的根目录,但不会添加到特定目录.如何指定要映射lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so到jar中类路径中的目录的资源映射?我正在尝试做什么的术语是什么?
假设 sigar 确实能够从类路径加载本机库,那么这应该可以解决问题:
libraryDependencies += "org.fusesource" % "sigar" % "1.6.4" classifier("native") classifier("")
Run Code Online (Sandbox Code Playgroud)
否则,您需要手动从 jar 中解压它们并提供正确的 java.library.path
| 归档时间: |
|
| 查看次数: |
3429 次 |
| 最近记录: |