如何修复Maven集成Weka到Java时的com.github.fommil.jni架构未识别错误?
解决Weka集成Maven时aarch64架构未识别的警告问题
问题原因
你遇到的警告是因为Weka 3.8.6依赖的com.github.fommil.netlib系列库(ARPACK、BLAS、LAPACK)旧版本不支持aarch64架构,导致无法加载原生计算实现,只能 fallback 到纯Java版本。这些是警告而非错误,不影响基本功能,但如果需要消除警告或提升计算性能,可按以下方案处理:
解决方案
1. 直接忽略警告(最简单)
日志级别为WARNING,纯Java fallback实现可正常运行,若业务对计算性能无高要求,无需额外处理,程序可正常使用。
2. 升级Weka版本
Weka 3.9.x及以后的稳定版本依赖的netlib库已更新,支持aarch64架构。修改Maven依赖为最新稳定版(比如3.9.6):
<dependency> <groupId>nz.ac.waikato.cms.weka</groupId> <artifactId>weka-stable</artifactId> <version>3.9.6</version> </dependency>
3. 替换兼容aarch64的netlib依赖
若不想升级Weka,可排除旧版依赖,添加支持aarch64的netlib版本:
首先排除Weka自带的旧netlib依赖:
<dependency> <groupId>nz.ac.waikato.cms.weka</groupId> <artifactId>weka-stable</artifactId> <version>3.8.6</version> <exclusions> <exclusion> <groupId>com.github.fommil.netlib</groupId> <artifactId>all</artifactId> </exclusion> <exclusion> <groupId>com.github.fommil.netlib</groupId> <artifactId>arpack</artifactId> </exclusion> <exclusion> <groupId>com.github.fommil.netlib</groupId> <artifactId>blas</artifactId> </exclusion> <exclusion> <groupId>com.github.fommil.netlib</groupId> <artifactId>lapack</artifactId> </exclusion> </exclusions> </dependency>
然后添加支持aarch64的netlib包:
<dependency> <groupId>com.github.fommil.netlib</groupId> <artifactId>all</artifactId> <version>1.1.2</version> <type>pom</type> </dependency>
4. 强制使用纯Java实现消除警告
在JVM启动参数中添加以下配置,让netlib直接使用纯Java实现,跳过原生库加载:
-Dcom.github.fommil.netlib.BLAS=com.github.fommil.netlib.F2jBLAS -Dcom.github.fommil.netlib.LAPACK=com.github.fommil.netlib.F2jLAPACK -Dcom.github.fommil.netlib.ARPACK=com.github.fommil.netlib.F2jARPACK
内容的提问来源于stack exchange,提问作者Kanishka withanawasam
相关产品推荐
相关产品推荐

