异常 java.lang.UnsatisfiedLinkError,so库没有加载

App在使用过程中遇到如下错误:

java.lang.UnsatisfiedLinkError: Couldn't load weibosdkcore from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.miaomiaobank-1.apk,libraryPath=/data/app-lib/com.miaomiaobank-1]: findLibrary returned null

            at java.lang.Runtime.loadLibrary(Runtime.java:355)
            at java.lang.System.loadLibrary(System.java:525)
            at com.sina.weibo.sdk.net.HttpManager.<clinit>(HttpManager.java:83)
            at com.sina.weibo.sdk.net.AsyncWeiboRunner.request(AsyncWeiboRunner.java:84)
            at com.sina.weibo.sdk.utils.AidTask.loadAidFromNet(AidTask.java:307)
            at com.sina.weibo.sdk.utils.AidTask.access$2(AidTask.java:294)
            at com.sina.weibo.sdk.utils.AidTask$2.run(AidTask.java:159)
            at java.lang.Thread.run(Thread.java:841)


上述异常的抛出是由于,项目引用的so库存放路径不对,Android Studio不能加载读取。我的项目是从eclipse迁移到Android Studio上的,项目中用到了一些so库,目录结构如下图:


解决办法有两种:

1.在build.gradle文件加入

android {
...
  sourceSets {
    main.jniLibs.srcDirs = ['libs']
    test.jniLibs.srcDirs = ['libs']
  }
}
2.将.so库放入src/main/jniLibs下, http://www.cnblogs.com/xrwang/p/AndroidStudioImportJarAndSoLibrary.html


记得之后再Tools -->Android -->sync project with gradle files一下。

`java.lang.UnsatisfiedLinkError: no gdalalljni in java.library.path` 是一个在Java应用程序运行时出现的错误,表明Java虚拟机(JVM)无法找到或加载名为 `gdalalljni` 的本地文件。这个错误通常发生在需要使用本地方法(即通过Java调用的非Java代码)的Java程序中,特别是当这些本地方法依赖于特定的本地时。 要解决这个问题,你需要确保以下几个步骤都被正确执行: 1. 确认 `gdalalljni` 文件确实存在于你的系统上,并且放置在了系统能够识别的路径中。对于Windows系统,这通常是一个 `.dll` 文件;对于Linux系统,是一个 `.so` 文件;对于Mac系统,是一个 `.dylib` 文件。 2. 确保环境变量 `java.library.path` 包含了包含 `gdalalljni` 的目录。`java.library.path` 是Java程序查找本地文件的路径列表。你可以在运行Java程序之前通过 `-Djava.library.path=路径` 参数来指定该环境变量,也可以通过代码 `System.setProperty("java.library.path", "路径");` 在程序中设置。 3. 如果你是通过某种包管理工具(如Maven或Gradle)引入的依赖,请检查该依赖是否正确地包含了必要的本地文件,并且在构建过程中正确地将这些文件放置到了你的项目中。 4. 检查你的操作系统是否有其他配置问题,比如32位和64位的兼容性问题。 5. 如果是在开发环境中遇到这个问题,确保你的IDE(如Eclipse、IntelliJ IDEA等)也配置了正确的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值