我在Eclipse中有一个Maven项目,我使用
添加了Sigar库<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
这是在日食下顺利编译和执行。当我创建一个可执行jar时,我收到一个错误,java.library.path中不存在.so
文件。
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都无法以相同的错误执行。
请帮忙吗?谢谢
答案 0 :(得分:0)
请考虑使用Apache Maven Shade plugin来构建可执行jar。您可以配置您希望在最终的Uber jar中拥有哪种资源。详情请见here
实施例
<filter>
<artifact>*:*</artifact>
<includes>
<include>xxx/*.so</include>
</includes>
</filter>
希望有所帮助。