在 Maven 中使用 SIGAR

Posted

技术标签:

【中文标题】在 Maven 中使用 SIGAR【英文标题】:Using SIGAR with maven 【发布时间】:2013-04-28 13:41:56 【问题描述】:

我目前正在尝试在 maven-build 中使用 Sigar,它每次都说:

“org.hyperic.sigar.SigarException:java.library.path 中没有 libsigar-x86-linux.so”

我已经使用 mvn install:install-file -DgroupId=org.hyperic -DartifactId=sigar -Dversion=1.6.4 -Dpackaging=jar -Dfile=sigar.jar 将 Sigar 安装到 maven(其中 sigar.jar 是jar 仅包含 org-folder 中的文件,maven 依赖于 lib-folder 中的内容),但随后找不到 .so 文件。

我试图找到答案,他们大多说应该解压缩像 Unzip dependency in maven 这样的文件。解压缩(在通过 install:install-file 安装其他东西之后)确实可以正常工作,但该文件毕竟不包含在路径中。

然后我试图找到将文件包含在构建路径中的东西,所以我做了这样的事情:Surefire JUnit Testing using Native Libraries(我想在测试中使用 sigar),但这也不会改变任何东西。我已经尝试使用许多不同的文件夹,甚至将文件本身而不是它所在的文件夹添加到库路径中,但即使这样:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkMode>once</forkMode>
    <argLine>-Djava.library.path=$project.build.directory/lib/libsigar-x86-linux.so</argLine>
  </configuration>
</plugin>

不起作用,但文件显然在那里。我正在使用 Maven 2.2.1。

有没有人提示如何让 sigar 在这种情况下工作?

提前致谢, 达格雷

【问题讨论】:

【参考方案1】:

使用 surefire 插件,您不需要在参数前面加上 'D' 前缀(例如 - -java.library.path=$project.build.directory/lib/libsigar-x86-linux.so)。

【讨论】:

感谢您的建议,但问题的答案是,经过一番尝试和再次谷歌搜索后,将 target 添加到配置中。我以为 $project.build.directory 会包含这个,但它没有。 @DavidReichelt:您为什么不将此作为您自己的答案发布并接受它?

以上是关于在 Maven 中使用 SIGAR的主要内容,如果未能解决你的问题,请参考以下文章

Sigar介绍与使用

无法使用 sigar 获取处理时间

如何在 sbt-native-packager Akka 构建中包含 sigar 本机库?

Linux下使用Sigar 获取磁盘信息

Hyperic-Sigar简介

1 [main] DEBUG Sigar - no sigar-amd64-winnt.dll in java.library.path org.hyperic.sigar.SigarExcepti