Class doesn't implement Cloneable之怪象

从Bit到MCS:深度解析Xilinx FPGA程序固化流程与文件选型 本文深度解析Xilinx FPGA程序从调试到量产的固化流程,重点对比BIT、BIN、MCS和ELF四种文件格式的特性与适用场景。针对工业级应用,详细讲解MCS文件的生成优化、Flash烧录避坑指南及三级验证流程,并分享多镜像管理、加密安全等高级技巧,帮助开发者提升FPGA量产可靠性。 阅读详情

1. 报错:

  1. 11-20 14:06:10.89: W/dalvikvm(10190): threadid=15: thread exiting with uncaught exception (group=0x4001d400)   
  2. 11-20 14:06:10.360: E/AndroidRuntime(10190): FATAL EXCEPTION: GLThread 10  
  3. 11-20 14:06:10: E/AndroidRuntime(10190): java.lang.CloneNotSupportedException: Class doesn't implement Cloneable   
  4. 11-20 14:06:10.360: E/AndroidRuntime(10190):    at java.lang.Object.clone(Object.java:79)   
  5. 11-20 14:06:10.360: E/AndroidRuntime(10190):    at com.jnitest.nativetest(Native Method)

2. 现场说明:

   在进行android项目开发时, 想用java代码调用jni的test函数,, 并且再通过c的callCallBack函数, 回调到java的onCallback函数., 发生以上错误.

 

3. 代码:(这里只列出重要的,关键的代码.)

 java代码:

public class NativeClass {

private static String TAG= "NativeClass";

static {
        System.loadLibrary("test-jni");
    }

public static int onCallBack(int event, int type,String str) {  //回调回来的回调函数
  Log.i(TAG, "onCallBack======= " + event);
  Log.i(TAG, "onCallBack======= " + type);

Log.i(TAG, "onCallBack======= " + str);

return event;

}

public static native int test();  //native函数

 

c代码:

jobject my_obj;
JNIEnv* my_env;


extern "C" int callCallBack(int event, int type, const char *str) ;

extern "C"
{

//用于调用java的callback
int  callCallBack(int event, int type, const char *str)
{
    int err = 1000;
 jclass objClass = (my_env)->FindClass("com/jnitest/native/NativeClass");
 if(!objClass) {
  return -1;
 }
 //获取并调用java层的onCallBack函数
 jmethodID methodId = (my_env)->GetStaticMethodID(objClass, "onCallBack", "(IILjava/lang/String;)I");
 if (methodId == 0) {
  LOGDV("here can not find method %s\n", "onCallBack");
 } else {
  jstring data = (update_env)->NewStringUTF(str));
  
  err = (my_env)->CallStaticIntMethod(objClass, methodId, event, type, data);
  if(data)  my_env->DeleteLocalRef(data);
 }

 my_env->DeleteLocalRef(objClass);
 
 
 return err;

}

//jni native函数.
JNIEXPORT jstring JNICALL
Java_com_jnitest_native_test( JNIEnv* env, jobject thiz,jstring testStr )
{
    my_env = env; //必须保存,用于在回调的时候获取回调函数所在的class.
 my_obj = thiz;  //在本程序中,没有用到这个变量.
    const char *test_char = (env)->GetStringUTFChars(testStr, NULL);
 
 //调用callCallBack
 int i = callCallBack(0,1,test_char);

    return (env)->NewStringUTF(test_char);

}
}

 

测试代码:

maintest.java:

 

void testFunc() {

String s = NativeClass.test("ssss");

    Log.i("jniTest", " testFunc  s = " + s);

}

 

测试结果:

onCallBack=======0

onCallBack=======1

onCallBack=======ssss

 testFunc  s =ssss

 

4. 分析与 解决:

分析,:

根据错误提示:

1).  有clone相关错误;

2)   就发生在NativeClass的test函数中.

3). 那么, 是哪个类没有进行clone? 或者, 根本就不是clone的原因?

 4). NativeClass中,没有数据成员, 理论上讲,就不需要进行克隆.所以,应该不是NativeClass克隆的原因.

5). 在jni的test函数中,有对于my_obj的赋值,会不会是这个变量的赋值导致的呢?

解决:  由于my_obj没有用到(本来赋值后想用的), 而且可能会引起错误,所以,将这个变量的声明和赋值语句都去掉,

 

再测试,程序正常运行.

 

5. 总结:

1)  由java调用c时,一定要注意参数的正确传递.

2)  本例展示了如何用java调用c,再由c调用到java的过程.

3) 本例来源于android程序开发.

 

 

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建? 问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-... 阅读详情

相关推荐

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

Class doesn't implement Cloneable之怪象

1. 报错: 11-20 14:06:10.89: W/dalvikvm(10190): threadid=15: thread exiting with uncaught exception (group=0x4001d400)   11-20 14:06:10.360: E/AndroidRuntime(10190): FATAL EXCEPTION: GLThread 10...

weixin_34375251的博客 342

iPhone存储空间耗尽自救指南:从“白苹果”死锁到成功保数据刷机

本文详细介绍了iPhone存储空间耗尽导致'白苹果'死锁的解决方案,通过保留数据刷机方法成功恢复设备运行。文章分享了从失败尝试到最终成功的完整流程,包括关键操作步骤和预防措施,帮助用户在紧急情况下保住重要数据。

weixin_32578161的博客 290

重要接口—Cloneable接口

作用:允许实现了Cloneable接口的类的对象进行克隆操作。允许克隆的意思是可以调用clone()方法,至于是深拷贝还是浅拷贝,取决于如何重写Object的clone()方法。查看Cloneable接口的源码如下: package java.lang; public interface Cloneable { } 如果没有实现Cloneable就调用clone()方法,会抛出异常。看下Object源码就知道了: protected Object clone() throws CloneNotS

sanmi8276的博客 863

使用循环神经网络预测温度

简介 本文以天气时间序列数据集为例,讨论如何使用深度学习模型预测未来天气温度。 使用的是由德国耶拿马克思普朗克生物地球化学研究所的气象站记录。 数据每10分钟记录一次,共记录14种不同的量,如气温、气压、湿度、风向等,原始数据可追溯到2003年,本例只使用2009-2016年的数据。 数据 下载并解压数据略。 加载数据: data_dir = r'E:\practice\tf2\temperature' fname = os.path.join(data_dir, 'jena_climate_2009_

guotianqing的博客 5282

I2C通信协议SCL与SDA引脚特性:核心要点总结

深入讲解I2C通信协议中SCL和SDA引脚的工作机制与电气特性,帮助理解i2c通信协议的稳定传输原理,掌握上拉电阻配置与信号时序控制要点。

weixin_42103128的博客 2741

设计模式(十四)---原型模式

这篇博客我们来介绍一下剩下的最后一个创建型模式:原型模式(Prototype Pattern)。该模式有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程在 C++ 中就是一个克隆。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行效率更高。   这个模式的重点在于,客户端...

heng615975867的专栏 308

Wireshark 4.6 TCP 流图解析:3种拥塞控制算法可视化对比

本文深入解析Wireshark 4.6的TCP流图功能,通过可视化对比Reno、Cubic和BBR三种主流拥塞控制算法的性能特征。文章提供详细的实验环境搭建方法、流图分析工具使用技巧,以及算法调优建议,帮助网络工程师优化TCP性能。

weixin_29291573的博客 447

Class not implements Cloneable will cause CloneNotSupportedException

The test case using jdk 1.8. class C implements Cloneable class C implements Cloneable { int id; public C(int id) { this.id = id; } @Override public C clone() throws Clone...

houzhizhen的专栏 267

2025小红书跳转卡片实战指南:从零搭建独立后台与自动化发卡系统

本文提供了一份2025年小红书跳转卡片的实战搭建指南,详细解析了独立后台系统的核心架构与自动化发卡流程。文章从零开始,手把手教你使用Node.js、Vue.js等技术栈构建包含后台管理、用户制卡中心与前端交互的完整系统,旨在帮助运营者实现合规引流,并掌握数据自主权与自动化运营能力。

weixin_29234423的博客 518

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 695

com.airbnb.lottie.model.layer.Layer

package com.airbnb.lottie.model.layer; import android.graphics.Color; import android.graphics.Rect; import android.support.annotation.Nullable; import android.util.Log; import com.airbnb.lottie.L; i...

lifeqiuzhi521的博客 1114

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2545

Class does not Implement Equals——Code Correctness(代码正确性)

系列文章目录: 使用Fortify进行代码静态分析(系列文章) class does not implement equals(类未能实现Equals方法) 示例: 1 protected void Check_Clicked(Object sender, EventArgs e) 2 { 3 for (int i = 0; i &...

weixin_30439131的博客 908

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

cocos2dx2.1.4FATAL EXCEPTION: GLThread 10, Class doesn't implement Cloneable解决

cocos2dx2.1.4FATAL EXCEPTION: GLThread 10, Class doesn't implement Cloneable 错误出现场景: 点击按钮,通过jni方式调用sina android api,logcat错误信息如下 [code="java"] 04-19 09:29:06.191: W/dalvikvm(10190): threadid=8...

移动应用及游戏开发 249

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[hyddd的FindBugs分析记录][M S XSS]Class defines clone() but doesn't implement Cloneable

[H B CN] Class defines clone() but doesn't implement Cloneable [CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE] This class defines a clone() method but the class doesn't implement Cloneable. There are some ...

weixin_34311757的博客 221

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java中的clone()和Cloneable接口

clone顾名思义就是克隆,即,复制一个相等的对象,但是不同的引用地址。我们知道拿到一个对象的地址,只要提供相应的方法就可以修改这个对象,但是如果我们想要得到这个对象去修改它,又想保留这个对象原来的属性,这是就可以使用clone(),它会复制一个内容相同的对象而具有不同内存地址。 Cloneable接口,就是我们要使用clone()必须实现的接口,不然会抛出异常。 public class B

lzy的博客 2504

java中cloneable的使用

什么是java中的浅克隆和深克隆? 浅克隆:克隆对象中的变量与之前对象的值相同,并且对象中的引用类型变量仍然指向原来对象引用类型变量的地址. 深克隆:克隆对象中的变量与之前对象的值相同,并且对象中的引用类型变量指向了新的对象的引用变量的地址. 要想实现克隆,只需定义的类声明下cloneable这个标记性接口,并且衍生重写Object类中就有的clone()方法即可. 为什么类要首先声明cloneab

stormCoder的博客 2442

java object之clone

克隆的目的:快速创建一个已有对象的副本。 克隆的步骤: 创建一个对象将原有对象的数据导入到新创建的数据中 1. Object的clone()源代码简介 [java] view plaincopy /**   * Creates and returns a copy of this {@code Object}.

wangwenan1993的博客 586

java cloneable 用途_java中cloneable的使用

什么是java中的浅克隆和深克隆?浅克隆:克隆对象中的变量与之前对象的值相同,并且对象中的引用类型变量仍然指向原来对象引用类型变量的地址.深克隆:克隆对象中的变量与之前对象的值相同,并且对象中的引用类型变量指向了新的对象的引用变量的地址.要想实现克隆,只需定义的类声明下cloneable这个标记性接口,并且衍生重写Object类中就有的clone()方法即可.为什么类要首先声明cloneable标...

weixin_26870929的博客 667

FindBugs工具常见问题

1,AM: Creates an empty jar file entry (AM_CREATES_EMPTY_JAR_FILE_ENTRY)/AM: Creates an empty zip file entry (AM_CREATES_EMPTY_ZIP_FILE_ENTRY) 示例代码: ZipEntry entry = new ZipEntry(PATH); zos.putNextE...

weixin_33882452的博客 183

常见codeDEX问题及处理方案

Fortify工具介绍 Fortify静态代码分析器(SCA)通过以更少的工作量,更短的时间识别漏洞并保持代码质量,在帮助创建安全软件方面发挥着重要作用。Fortify SCA检测到其他静态测试技术无法比拟的广泛问题。Fortify软件安全研究组是一个全球团队,被业界公认为监控新兴威胁的顶级安全组织,他们的知识汇集到Fortify SCA(以及所有其他Fortify产品)中,因此组织可以掌握最新的威胁。 摘自官网:https://www.microfocus.com/en-us/products/sta

力挽狂澜的POWER 3709

对比AppScan Source和Fortify扫描AltoroJ的结果

1、漏洞总数AppScan Source:91Fortify:1212、Disclaimer.htm:34(Cross-Site Scripting:DOM)的漏洞Fortify能扫描出来,AppScan Source扫描不出来另外,Fortify能扫描出比较多Persistent类型的XSS漏洞并且归类比较好(分DOM、Persistent、Reflected类型列出)3、AdminLoginS

软件质量优化 1万+

Fortify安全扫描Java Android 代码审计 问题及解决方案整理

Access Control: SecurityManager Bypass Explanation 使用通过即时调用者的类加载器检查执行任务的 Java API 时应小心谨慎。这些 API 会绕过可确保已向执行链中的所有调用者授予了必需安全权限的 SecurityManager 检查。由于这些 API 可能会削弱系统安全性,因此不应在不可信认的代码上调用它们。 在这种情况下: 1. 可以通过...

Swallow的博客 8394

Java clone复制对象,报java.lang.CloneNotSupportedException解决方法

java中使用clone()来克隆对象时,直接调用就可以: ReviewCost reviewCost = null; try { reviewCost = (ReviewCost) that.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } 但是这样在运行中会有错误: java.lang.CloneNotSupportedException: class com.bjhab.ent

qq_44322555的博客 8262

Java之CloneNotSupportedException

如果在没有实现Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。

zhuhao717的专栏 2万+
上一篇: Android开发- Android ANR原因分析
下一篇: "Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace"问题解决
liranke
博客等级 码龄20年 4939粉丝 594原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值