Я строю проект Scala с sbt и создаю толстую банку с плагином sbt-assembly. Я могу добавить неуправляемые банки (например, банку Сигара), добавив следующее к build.sbt
.Включая библиотеку Hyperic Sigar в банке при использовании сборки sbt для проекта Scala
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
, и они должны быть связаны с каталога в пути к классам в банке. Единственный способ, которым я знаю, чтобы сделать отображение, как это:
resourceDirectory in Compile <<=
baseDirectory{ _/"lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
Это приводит к тому, *.so
библиотеки, которые будут добавлены к корню из банки, но не конкретный каталог. Как я могу указать карту ресурсов для отображения от lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
к каталогу в пути к классам в моем банке? Какова терминология того, что я пытаюсь сделать?
любая конкретная причина, по которой вы не используете «org.fusesource»% «sigar»% «1.6.4» classifier («native»)? – OlegYch
@OlegYch, я изменил использование 'libraryDependencies + =" org.fusesource "%" sigar "%" 1.6.4 "' in 'build.sbt', и я все еще получаю ту же ошибку. –