springboot项目部署 国产芯片 碰到的一个问题(sqlite)

Caused by: java.lang.Exception: No native library is found for os.name=Linux and os.arch=aarch64

at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:284)

at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65)

at org.sqlite.core.NativeDB.load(NativeDB.java:53)

at org.sqlite.core.CoreConnection.open(CoreConnection.java:211)

... 27 common frames omitted

项目使用sqllite作为内置数据库,部署在普通的服务器(x86,arm架构CPU)上没问题,但是部署在国产服务器上使用国产CPU例如:aarch64架构的,龙芯(loongarch64)就报如上报错

看错误信息 No native library found for os.name=Linux, os.arch=loongarch64 是在龙芯系统上找不到,本地library

百度调查,发现是项目依赖的jar包里,不包含龙芯的library,如下图

然后到龙芯的社区里,找到龙芯的maven库,发现他们的库里有sqlite-jdbc的依赖

然后按照说明,修改pom文件, 添加龙芯库

龙芯参照:https://docs.loongnix.cn/maven/introduction.html

复制代码
<repositories>
	<repository>
		<id>loongson</id>
		<name>Loongson Maven</name>
		<url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
		<releases><enabled>true</enabled></releases>
		<snapshots><enabled>true</enabled></snapshots>
	</repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>loongson</id>
        <name>Loongson Maven</name>
        <url>https://maven.loongnix.cn/loongarchabi1/maven/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
    </pluginRepository>
</pluginRepositories>

修改setting,!loongson 这个的意思 如果 id=loongson里面有这个包 就去loongson里的

复制代码
<mirror>
        <id>central</id>
        <mirrorOf>*,!loongson</mirrorOf>
        <name>Maven Central</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
    </mirror>

删掉本的库的jar 然后重新下载。如下图,新的包里就包含loongarch64这个了

终极原因:龙芯用的是国产cpu,指令集也是自己研发的。而sqlite 的java驱动是会调用本地接口,所以需要在龙芯架构下编译一份.so文件。而maven中心库里面的sqlite驱动不包含这个龙芯的版本

相关推荐
AAA修煤气灶刘哥23 分钟前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督34 分钟前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
勇往直前plus1 小时前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵1 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师1 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥1 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM971 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端
三十_1 小时前
【NestJS】构建可复用的数据存储模块 - 动态模块
前端·后端·nestjs
武子康1 小时前
大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程
大数据·后端·spark
努力的小郑1 小时前
MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
后端·mysql