java.lang.IllegalArgumentException: object is not an instance of declaring class新发现
背景
因为要将方法缓存起来提高性能
报错
java.lang.IllegalArgumentException: object is not an instance of declaring class
解决
之前我的一篇文章:
https://blog.csdn.net/dataiyangu/article/details/88370206
说的是因为第一次构造出Method的类,和真正执行的时候的对象的类不是同一的。
经过这次发现:这个错误还和ClassLoader有关系,如果ClassLoader不相同,也会报这个错误。
log.debug("req###########################################+" + req.getClass().getClassLoader().toString());


可以看到两个request的context是不同的。
所以会报如上的错误。
引申
当然,解决的办法就是将
classLoader的hashCode+className+methodName 作为key缓存到HashMap中,
这个时候可能会报错空指针
因为,有些基础的类确实得不到ClassLoader,而在我的实际情况中,这些类(真的是得不到ClassLoader的情况)不会出现二次访问的情况,所以不需要访问,所以做如下处理即可。
ClassLoader classLoader = object.getClass().getClassLoader();
if (classLoader != null) {
int classLoaderHash = classLoader.toString().hashCode();
methodId = classLoaderHash+className + methodName;
}else{
methodId = className + methodName;
}
java.lang.IllegalArgumentException: object is not an instance of declaring class新发现的更多相关文章
- java.lang.IllegalArgumentException: object is not an instance of declaring class
今天在使用反射的时候,出现了java.lang.IllegalArgumentException: object is not an instance of declaring class错误-具体是 ...
- 报错:java.lang.IllegalArgumentException: object is not an instance of declaring class
反射的报错信息如下: java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.r ...
- 由Resin引发的java.lang.IllegalArgumentException: object is not an instance of declaring class(反射中使用)思考
文章目录 背景 原因 解决办法 背景 在java agent中抓取Resin的 某些方法,在invoke的时候出现错误 java.lang.IllegalArgumentException: obje ...
- Android java.lang.IllegalArgumentException: Object returned from onCreateLoader must not be a non-static inn
AsyncTaskLoader: http://developer.Android.com/intl/zh-CN/reference/android/content/AsyncTaskLoader.h ...
- 【IllegalArgumentException】: object is not an instance of declaring class
java.lang.IllegalArgumentException: object is not an instance of declaring class 日前在调试动态代理的例子中,出现以上报 ...
- [Android] View.setTag(key,Object) (java.lang.IllegalArgumentException: The key must be an application-specific resource id.)
转自: http://blog.csdn.net/brokge/article/details/8536906 setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息 ...
- Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [VCodeModel]
2019-08-20 17:53:24,054 [ERROR] [http-nio-8047-exec-1] [HttpResult.java : 143] 系统异常 org.springframew ...
- IDEA报错: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.url' in value "${spring.datasource.url}"
运行审核流模块: 在ActivitiServiceApplication模块日志报错: Error starting ApplicationContext. To display the auto-c ...
- Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.username' in string value "${jdbc.username}"
1.启动dubbo的引用dubbo服务时候报下面这个错误,这是由于去找dubbo的发布服务未找到报的错误,所以先启动dubbo的发布服务即可. [INFO] Scanning for projects ...
随机推荐
- 【转载】研发应该懂的binlog知识(上)
---------------------------------------------------------------------------------------------------- ...
- ubuntu 虚拟机配置 IP、子网掩码、网关、DNS
ubuntu 虚拟机配置 IP.子网掩码.网关.DNS 执行 sudo vim /etc/network/interfaces 添加如下配置: auto eth0 iface eth0 inet st ...
- $.ajax()方法详解(网上引用)
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- C# 反射实现动态加载程序集
原文:https://blog.csdn.net/pengdayong77/article/details/47622235 在.Net 中,程序集(Assembly)中保存了元数据(MetaData ...
- C#设计模式:外观模式(Facade Pattern)
一,什么是外观模式? 外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用. 二,我们看看代码的实现 using System; using Syst ...
- jQuery——复选框操作
学习jQuer对表单.表格操作的过程中,按照书上的例子发现一个问题: <!DOCTYPE html> <html> <head> <title>复选框应 ...
- linux设定 runlevel 3
runlevel 查看当前系统运行级别 vi /etc/inittab //运行级别配置文件
- 关于Python获取图片文件二进制数据的问题(获取为空)
在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...
- nginx windows 代理 80端口 500
今天准备配置一个nginx 用来代理80端口分别访问.net core 和spring boot 服务器 配置使用的最基本的代理配置 #user nobody; worker_processes 1; ...
- 16.go语言基础学习(上)——2019年12月16日
2019年12月13日10:35:20 1.介绍 2019年10月31日15:09:03 2.基本语法 2.1 定义变量 2019年10月31日16:12:34 1.函数外必须使用var定义变量 va ...