Buduję projekt Scala z sbt i tworzenie słoika z wtyczką sbt-assembly. Mogę dodać niezarządzane słoiki (takie jak słoik Sigar), dodając poniższe do build.sbt
.Łącznie z biblioteką Hyperic Sigar w słoiku przy użyciu modułu sbt dla projektu Scala
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
Jednak gdy próbuję to działa, pojawia się następujący błąd, ponieważ biblioteki *.so
nie są wliczone w słoiku.
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)
Biblioteki chcę to są w lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
i muszą być połączone z katalogu w ścieżce klasy w słoiku. Jedynym sposobem, wiem, aby zrobić mapowanie jak to jest:
resourceDirectory in Compile <<=
baseDirectory{ _/"lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
Powoduje biblioteki *.so
należy doliczyć do korzenia słoika, ale nie konkretnego katalogu. Jak mogę określić mapę zasobów do mapowania z lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
do katalogu w ścieżce klas w moim słoiku? Jaka jest terminologia dla tego, co próbuję zrobić?
jakiś szczególny powód, dla którego nie używasz "org.fusesource"% "sigar"% "1.6.4" klasyfikatora ("natywny")? – OlegYch
@OlegYch, zmieniłem na using 'libraryDependencies + =" org.fusesource "%" sigar "%" 1.6.4 "' w 'build.sbt', i nadal otrzymuję ten sam błąd. –