файлы sigar .so в проекте Eclipse с использованием Maven

У меня есть проект Maven в Eclipse, где я добавил библиотеку Sigar, используя

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

Это компилировалось и выполнялось плавно под eclipse. Когда я создал исполняемый файл jar, я получил сообщение об ошибке, что файл .so не существует в java.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

После некоторых исследований и чтения (хорошо, больше, чем некоторые) я скопировал папку lib sigar (ту, которая содержит все файлы .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>, с/без каталога сборки, прямой/обратной косой чертой и так далее. Каждый раз, когда банку не удается выполнить с той же ошибкой.

Любая помощь, пожалуйста? Спасибо


person Skaros Ilias    schedule 30.12.2015    source источник
comment
Вы пытались скопировать/вставить всю папку lib (со всеми .so и .dll и еще много чего) в папку main/src/webapp в соответствии с stackoverflow.com/questions/21894128/ ?   -  person Aurelien    schedule 30.12.2015
comment
@Aurelien Я видел эту ветку, но у меня нет такой папки.   -  person Skaros Ilias    schedule 31.12.2015


Ответы (1)


рассмотрите возможность использования подключаемого модуля Apache Maven Shade для создания исполняемого jar-файла. Вы можете настроить, какие ресурсы вы хотите иметь в своей последней банке Uber. Подробнее см. здесь

Пример

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

Надеюсь, это поможет.

person javapapo    schedule 31.12.2015