0

我在 Eclipse 中有一个 Maven 项目,我在其中添加了 Sigar 库

<dependency>
        <groupId>org.fusesource</groupId>
        <artifactId>sigar</artifactId>
        <version>1.6.4</version>
</dependency>

这是在eclipse下顺利编译和执行的。当我创建一个可执行 jar 时,我收到一个错误,即.sojava.library.path 中不存在该文件。

DEBUG Sigar  - no libsigar-amd64-linux.so in java.library.path
org.hyperic.sigar.SigarException: no libsigar-amd64-linux.so in java.library.path

经过一些研究和阅读(好吧,不止一些),我在我的项目下复制了 sigar 的 lib 文件夹(包含所有 .so 文件的那个)(我不确定是否必须将它复制到特定的地方,所以我把它放在项目的根目录下)并将maven依赖项更改为:

<dependency>
        <groupId>org.fusesource</groupId>
        <artifactId>sigar</artifactId>
        <version>1.6.4</version>
        <configuration>
            <workingDirectory>${project.build.directory}/Sigar_lib</workingDirectory>
            <mainClass>my.package.name.MyClass</mainClass>
            <includeProjectDependencies>true</includeProjectDependencies>
        </configuration>            
    </dependency>

尝试了所有不同的<workingDirectory>标记方法,有/没有构建目录,正斜杠等。每次 jar 执行失败时都会出现相同的错误。

请问有什么帮助吗?谢谢

4

1 回答 1

0

请考虑使用Apache Maven Shade 插件来构建您的可执行 jar。您可以在最终的 Uber jar 中配置您希望拥有的资源类型。在此处查看详细信息

例子

<filter>
      <artifact>*:*</artifact>
       <includes>
            <include>xxx/*.so</include>
      </includes>
 </filter>

希望有帮助。

于 2015-12-31T17:47:37.640 回答