springboot项目部署 龙芯 碰到的一个问题(sqlite

2024-10-15  本文已影响0人  草祭木初

项目里有个需求,移动设备在连不上网的情况下,也要可以查看数据
所以我们选择使用sqlite
然后pc端生成数据文件xx.db上传到移动端使用

开发是时候没有问题,部署到龙芯服务器上时,生成数据文件报错

Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=loongarch64, paths=[...]
    at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:363)
    at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:72)
    at org.sqlite.core.NativeDB.load(NativeDB.java:67)
    at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:280)

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

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


002f1676320a1abf37f6a06d3977576.png

然后到龙芯的社区里,找到龙芯的maven库,发现他们的库里有sqlite-jdbc的依赖
然后按照说明,修改pom文件, 添加龙芯库
龙芯参照:https://docs.loongnix.cn/maven/introduction.html

        <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这个了


1729054939525.png

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

上一篇 下一篇

猜你喜欢

热点阅读