17、java.lang.UnsatisfiedLinkError: No implementation 处理方法

2023-11-03

一、问题现象

在使用第三方生成的 so 库时,遇到下面的bug:

UnsatisfiedLinkError: No implementation found for

java.lang.UnsatisfiedLinkError: No implementation found for

java.lang.String com.cloud.wd.tralanguage.JniUtil.getStringFromC() 

(tried Java_com_cloud_wd_tralanguage_JniUtil_getStringFromC 

and Java_com_cloud_wd_tralanguage_JniUtil_getStringFromC__)

如图:
这里写图片描述

二、问题分析

按照bug log提示内容说是我 getStringFromC 方法并没有实现:

这里写图片描述

而我引用的是第三方的so这个方法已经实现了,既然实现了 为什么还会提示需要实现呢?

原来仔细观察得知 :提示让我实现 我自己写的 native 方法:

com.cloud.wd.tralanguage.JniUtil.getStringFromC(),压根没有引用到我添加的so中的方法, 问题找到了那么如何引用 正确的so呢?

经过一番的 google 发现:再使用第三方so 方法时, 所使用的native 类的位置要和之前生成 so 方法的 包名 、类名 、方法名 要完全一致!

例如:生成so工程的 native 方法类 ,

包名:  com.cloud.jnitest   
类名:  JniTest
方法名:getStringFromC ()

这里写图片描述

则 要想使用 so中的getStringFromC () 方法; 就需要

使用的so工程中添加:

包名:  com.cloud.jnitest   
类名:  JniTest
方法名:getStringFromC ()

这里写图片描述

只用 两者的包名 、类名、方法名 完全一致才会正确的引用到需要加载的so;

三、问题解决

问题找到了,就好解决了。

  1. 在src/main/java 目录下建立 和生成so包名一样的文件夹,

    例如:使用生成so的包名是 com.cloud.jnitest ,那么就在使用so的工程src/main/java 新建 相同包名的文件。

  2. 在src/main/java /[so包名] 目录下建立 和生成so包名一样的类文件,

    例如:使用生成so的类名是 JniTest ,那么就在使用so的工程src/main/java /[so包名] 新建 相同包名的类文件。

  3. 在src/main/java /[so包名] /类文件 ,中添加需要使用到的方法。

    在使用 so的工程中 最终 效果:

    这里写图片描述


啦啦啦 —— 今天夏至要吃面!所以 我今晚 下面给你吃呀 … 哈哈


参考链接:

http://m.blog.csdn.net/u012721933/article/details/51016027

http://blog.csdn.net/ouyang_peng/article/details/52997698

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

17、java.lang.UnsatisfiedLinkError: No implementation 处理方法 的相关文章

随机推荐

  • java多线程并发

    目录 一 原子性 有序性 可见性 1 原子性 2 有序性 3 可见性 二 如何保证以上三性 1 硬件层面解决 1 在总线加 LOCK 锁 2 使用缓存一致性协议 2 软件层面解决 1 背景 JVM内存模型 2 原子性 3 可见性 4 有序性
  • [需求管理-9]:需求规格说明书SRS

    目录 第1章 需求规格说明书概述 1 1 什么软件项目需求规格说明书 1 2 需要规格说明书在项目中阶段 1 3 需要规格说明书的作用 1 4 主要特点 1 5 衡量标准 1 7 评审注意事项 第2章 需要规格说明书的格式与主要内容 1 引
  • Ubuntu20.04安装MySQL8

    Ubuntu20 04安装MySQL8 MySQL8下载 点击MySQL download下载官网 按照自己所需要的版本下载对应的MySQL版本 如下图 点击下载后在进行解压 大致文件如下所示 然后需要一次安装对应的 deb文件 普通 de
  • D354周赛复盘:特殊元素平方和+数组最大美丽值(滑动窗口)+合法分割最小下标

    文章目录 6889 特殊元素平方和 思路 完整版 取模注意 不能对0取余 取模 解答错误 本题的数组最后一个下标是nums nums size 6929 数组的最大美丽值 排序 滑动窗口 思路1 排序 滑动窗口 注意点 6927 合法分割的
  • android os bundle,java – android.os.Bundle无法在libgdx Android项目中解决

    我刚刚开始使用 Libgdx练习制作游戏 我使用在网站上提供的项目创建 jar来创建初始项目 但是 在Android项目中显示错误说 android os Bundle cannot be resolved 我使用Eclipse for J
  • 攻防世界-Misc-肥宅快乐题(.swf文件查看帧)

    下载下来是个swf文件 用PotPlayer打开可以进行每一帧的遍历 玩通关也行 这游戏也挺有意思的 题目有提示 注意与NPC的对话哦 所以对话中的信息需要注意 第57帧中的对话中出现信息 提取出来 U1lDe0YzaVpoYWlfa3U0
  • 公司质量管理部门的工作职责

    确立和维护企业的质量方针和目标 制定质量管理计划 实施和监控相关的标准和流程 开展内部培训和交流 提高员工对质量管理和控制的认知和理解 促进员工的质量意识和质量文化 研发新产品和优化现有产品的规范和标准 帮助设计和生产团队从开始到结尾确保质
  • python openpyxl的简单使用和设置单元格背景色

    def pyxl execl import openpyxl wb openpyxl Workbook ws wb active ws title 麦嘎 data 1 2 3 4 djdj dkdk djdj 23 98 dk kdkd f
  • 程序员必用的6个代码对比神器附下载地址

    一 WinMerge WinMerge是一款基于Windows系统下的文件比较和合并工具 使用它可以非常方便地比较多个文档内容 适合程序员或经常需要撰写文稿的朋友使用 WinMerge会将两个文件内容做对比 并在相异之处以高亮度的方式显示
  • shell命令 1.正则

    1 shell cp R f 目录递归拷贝 表示直接拷贝不需要询问 cp R f A B 表示将A目录下的所有东西拷贝到B目录下 cp R f Users jianan Documents cocos CocosJSGame Users j
  • 文献略读 Dictionary optimization for greedy recovery in Modulated WidebandConverter based...

    这是一篇关于MWC的字典的优化的文章 字典的选择对于MWC架构而言是非常重要的 尤其是对于存在噪音的情况下 噪音会被折叠 所以字典中的增白步骤是有益的 本文证明了最小化字典相干性 是贪婪算法恢复的关键标准 提出了一种牛顿迭代法来优化字典 可
  • 英语学习(为什么标题至少5个字?)

    1 痘痘护理 Band Aid 邦迪创可贴 acne kni 粉刺 痤疮 patch 小块 补丁 acne patch 痘痘贴 pimple 青春痘 over the counter medicine 非处方药 dermatologist
  • Win7安装64位CentOS 6.4双系统详细过程

    本文是在两篇文章整合而成 分别是 Mr Johness的 最清晰细致的教程 一步步教你打造Win7 CentOS双系统 和 cjh326419411的 Win7上安装centos6 4 双系统 前者安装centos过程详细 后者考虑了Cen
  • 一文详解RabbitMQ,RocketMQ和Kafka的异同

  • 【华为OD统一考试B卷

    在线OJ 本题通过率100 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1
  • Android——Intent.addflags的使用

    activity的启动模式 4种 在manifest里面对应的activity中增加android launchMode 属性指定启动模式 和在activity中增加 Intent intent2 new Intent intent2 se
  • react项目axios网络请求封装(包含取消请求不报错)

    搭建项目过程中有一个封装网络请求的步骤 现在已react vite项目详细描述一下 api文件夹 包含path文件夹 请求接口地址 index ts 统一导出接口调用点 server ts api请求通用操作 tool ts 处理serve
  • JMETER分布式压测(精讲教程)

    第一步 关闭防火墙 第二步 在负载机上要安装JMeter 并确保其中一台机器作为主的controller 其它的机器作为agent 注意事项 Jmeter的版本要求一致 Jmeter都能正常的运行 安装JDK1 8并配置JDK环境变量与Jm
  • 网络编程之IO复用机制(多路IO转接)之epoll_create,epoll_ctl,epoll_wait函数06

    1 epoll create函数 epoll create是创建一个epoll句柄 参数size用来告诉内核监听的文件描述符的个数 跟内存大小有关 include
  • 17、java.lang.UnsatisfiedLinkError: No implementation 处理方法

    一 问题现象 在使用第三方生成的 so 库时 遇到下面的bug UnsatisfiedLinkError No implementation found for java lang UnsatisfiedLinkError No imple