问题出现
我有一个项目正在使用一些本机库 (.dll),然后运行时报错java.lang.UnsatisfiedLinkError: XXX: Can’t load this .dll (machine code=0xbd) on a AMD 64-bit platform
通过查找资料,然后发现resource目录下的dll和jar文件大小变了
目录结构:
问题原因
使用maven打包时,会将 ${xx} 中的内容替换为配置的 properties 属性
问题解决
方案一
<resources>
<!--避免渲染了lib里面的文件-->
<resource>
<directory>src/main/resources/lib</directory>
<filtering>false</filtering>
<targetPath>WEB-INF/classes</targetPath>
</resource>
<!--在pom文件中增加(使用maven渲染yml)-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
[pom中resources标签解析](https://blog.csdn.net/qq_41282282/article/details/108301392)
方案二
通过添加以下配置在整个项目中禁用对 dll 文件的过滤:
<build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>dll</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
方案三
指定渲染文件后缀
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>