我正在使用 sbt 构建一个 Scala 项目,并使用 sbt-assembly 插件创建一个胖 jar。我可以通过将以下内容添加到build.sbt
.
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
但是,当我尝试运行它时,我收到以下错误,因为*.so
库不包含在 jar 中。
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 中类路径中的目录?我正在尝试做的事情的术语是什么?