Ich baue ein Scala-Projekt mit sbt und ein Fettglas mit dem sbt-Assembly-Plugin erstellen. Ich bin in der Lage, nicht verwaltete Gläser (wie das Sigar-Glas) hinzuzufügen, indem ich Folgendes zu build.sbt
hinzufüge.Inklusive Hyperic Sigar-Bibliothek in Jar während der Verwendung von sbt Assembly für Scala-Projekt
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
Allerdings, wenn ich versuchen, diese läuft, bekomme ich folgende Fehlermeldung, da die *.so
Bibliotheken sind nicht im Glas eingeschlossen.
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)
Die Bibliotheken I enthalten sein sollen sind in lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
und sie müssen im Glas in ein Verzeichnis in dem Classpath verknüpft werden. Der einzige Weg, den ich kenne, eine Zuordnung zu tun ist wie folgt:
resourceDirectory in Compile <<=
baseDirectory{ _/"lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
Dies bewirkt, dass die *.so
Bibliotheken des Glases zu Wurzel hinzugefügt werden, aber nicht ein bestimmtes Verzeichnis. Wie kann ich eine Ressourcenzuordnung angeben, um von lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
zu einem Verzeichnis im Klassenpfad in meinem Jar zu mappen? Was ist die Terminologie für das, was ich versuche?
einen bestimmten Grund, warum Sie nicht "org.fusesource"% "sigar"% "1.6.4" Klassifikator ("native") verwenden? – OlegYch
@OlegYch, habe ich zu 'libraryDependencies + =" org.fusesource "%" sigar "%" 1.6.4 "' in 'build.sbt' geändert, und ich bekomme immer noch den gleichen Fehler. –