我在Akka中有一个生产应用程序,我从以下选项开始:
I have a production application in Akka that I start with the following option:
-Djava.library.path="./native/"(其中 native 目录包含库 libsigar-amd64-linux.so ),一切都很好。
(with native directory containing a library libsigar-amd64-linux.so) and everything is fine.
当我键入 sbt测试我遇到以下错误:
When I type sbt test I'm facing the following error:
[executorTest-akka.actor.default-dispatcher-13] DEBUG Sigar - no libsigar-amd64-linux.so in java.library.path org.hyperic.sigar.SigarException: no libsigar-amd64-linux.so in java.library.path我试图修改 build.sbt
libraryDependencies in Test ++= file("native/libsigar-amd64-linux.so")但没有帮助。
推荐答案JVM仅从 java.library.path 加载库。 libraryDependencies 用于声明托管依赖项(例如jar)。
JVM will only load libraries from the java.library.path. The libraryDependencies is for declaring managed dependencies (as e.g. jars).
> help libraryDependencies Declares managed dependencies.您需要指定前面提到的 java.library.path 进行测试。您有两种选择。
What you need is to specify the aforementioned java.library.path for your tests. You have two choices.
可以在派生的JVM中运行测试,将以下行添加到 build.sbt
One you can run tests in a forked JVM, add following lines to your build.sbt
javaOptions in Test += s"""-Djava.library.path=${baseDirectory.value / ".native"}""" fork in Test := true第二步,您可以使用(请注意,这将覆盖整个过程的 java.library.path ),如果您不进行测试,则将在测试中可见
Second you can run sbt using (note this will override the java.library.path for the whole process), which in case you're not forking tests, will be visible in tests
sbt -Djava.library.path=./native更多推荐
如何声明对本机.so库的依赖关系以进行测试?
发布评论