Can‘t load this .dll (machine code=0xbd) on a AMD 64-bit platform问题

一、问题背景

(1) sigar的使用

 sigar是一个开源的跨平台系统信息收集工具,C语言实现,使用简单。sigar API 依赖本地库文件工作的,内部通过java.library.path加载本地库文件,每次在新的环境下使用,需要将库文件添加到系统的java.library.path路径下。为了解决这个问题,将本地库文件添加到项目中,通过 java api 读取 sigar 路径,并将路径追加到 java.library.path中。(如果需要实现该功能的可以参考:添加sigar本地库到 java.library.path自定义代码实现

 (2)异常

项目启动后在,调用sigar获取操作系统信息抛出了如下异常 org.hyperic.sigar.SigarException: 项目路径\target\classes\sigar\sigar-amd64-winnt.dll: Can't load this .dll (machine code=0xbd)

on a AMD 64-bit platform

 (3)问题查找

maven项目开启了filtering,pom文件配置如下:

<resources>
   <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
   </resource>
</resources>

由于项目的maven配置设置了filtering为true,maven打包时会对recourses目录下的所有文件进行filtering处理,resources目录下的二进制文件会被修改,导致打包后无法正常使用。

二、解决办法

在maven resource plugin的配置下添加nonFilteredFileExtensions配置项,添加需要排除的二进制文件扩展名:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-resources-plugin</artifactId>
   <version>3.0.1</version>
   <configuration>
      <nonFilteredFileExtensions>
         <nonFilteredFileExtension>dll</nonFilteredFileExtension>
      </nonFilteredFileExtensions>
   </configuration>
   ...
</plugin>

添加上述配置后maven打包则会阻止对扩展名为上述配置中的文件进行filtering处理。

参考文章:https://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值