私は 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")
*.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 のクラスパスのディレクトリからマップするリソース マップを指定するにはどうすればよいですか? 私がやろうとしていることの用語は何ですか?