解决javassist不能重复加载字节码的问题

因为我的是一个接口,所以麻烦诸多。

事实上在类加载前做好准备工作,不会遇到这个问题,但是我正巧,在使用javassist的时候需要加载类,因为我要读取源码,拿到注释,再通过ssit 修改字节码,交给spring管理

就遇到 了这个问题,因为字节码已经被加载了,使用

toClass的时候,就重复了。

查询了资料后,大概有几个解决办法吧

HotSwapper 
可以指定任何端口号。由于HotSwapper不会启动另一个 JVM 来运行目标应用程序,因此此端口号仅用于线程间通信。具体不是特别理解,但是好像有一些限制,不能对接口。

用法大致是

监听端口

 HotSwapper hot = new HotSwapper("9527"); 

启动方法vm添加:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9527

将toclass 换成

 hot.reload(clazz.getName(), ctClass.toBytecode());

,第二个是给我的接口,生成实现类对象。但是太麻烦了。

最终我选择了

ctClass.setName("temp"+ctClass.getName());

修改名称。但是

Class.forName(ctClass.getName());

没有问题。

使用spring自定义

ImportSelector的时候出现了问题。最终跟进源码发现,spring会检查target里面有没有。

貌似,然后我就

ctClass.writeFile("D:\\projectDemo\\swagger-aotu-demo\\silence-spring-auto\\target\\classes"); 写进去,然后问题就解决了

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据type类型判断是否为基本数据类型,或基本数据类型的包装类,或泛型为基本数据类型

根据type类型判断是否为基本数据类型,或基本数据类型的包装类,或泛型为基本数据类型 /*** 判断是否为基本数据类型,或基本数据类型的包装类,或泛型为基本数据类型* string true* int true* Integer true* String[] true* user[] …

根据参数类型,获取泛型里所有的引用clazz,获取泛型实际参数

/*** 根据参数类型&#xff0c;获取泛型里所有的引用clazz* 列&#xff1a; public List<PageResult<List<User>>> intTest(RequestEntity<Map<String, List<PageResult<User>>>> req)** aClass class org.springframework.http.Re…

根据class判断是否为基本数据类型,或基本数据类型的包装类,或基本类型的数组,不考虑泛型

/*** 判断是否为基本数据类型&#xff0c;或基本数据类型的包装类&#xff0c;不考虑泛型* string true* int true* Integer true* String[] true* user[] false* List<string> false* list<user> false*/private static boolean isPrimitive(Class<?> cl…

反射根据类型,提取引用类型clazz

根据反射&#xff0c;提取引用类型&#xff0c;不包含基本数据类型&#xff0c;以及基本数据类型的包装类&#xff0c;及单列集合&#xff0c;和双列集合 /*** 是否为引用数据类型*/private static boolean isPrimitive(Class<?> clazz) {if (clazz.equals(String.class…

通过反射遍历属性,找出基本数据类型,和自定义引用类,以便生成接口文档时使用

/*** 是否为一个用户标准bean&#xff0c;不考虑泛型情况*/private static boolean isBean(Class<?> clazz) {if (clazz.equals(String.class) || ClassUtil.isBasicType(clazz)) {return false;}if (clazz.isArray() && ClassUtil.isSimpleValueType(clazz.get…

通过反射还原实际参数类型

/*** 根据类型提取所有关联参数*/public static void getAllParameter(Type type, List<Class<?>> list) {Class<?> c1 TypeUtil.getClass(type);if (type instanceof ParameterizedType) {Type[] ts ((ParameterizedType) type).getActualTypeArguments…

通过反射复原完整的src方法名称

/*** 根据方法名&#xff0c;生成完整的方法行** param clazz 字节码* param method java.lang.reflect method* return public static Annotation getAnnotation(Class<?> clazz, ConstPool constPool);*/public static String getSrcMethod(Class<?> clazz, M…

js关闭iframe窗口_[Selenium]24.处理弹窗新式的模态窗口

场景页面上弹出的对话框是自动化测试经常会遇到的一个问题。很多情况下这个弹出的对话框是一个iframe&#xff0c;处理起来有点麻烦&#xff0c;需要进行switch_to操作. 请参考文章测试曾哥&#xff1a;[Selenium]23.对话框的处理​zhuanlan.zhihu.com但现在很多前端框架的对话…

android 暂停其他app的声音_【一万个APP】第二十二期潮汐

基本信息分类:健康健美版本:Android-2.5.3 IOS-2.5.2更新时间:Android:2019.02.26 IOS:2019.03.06IOS评分(N/H):4.9/4.9开发商: 广州多少网络科技有限公司官方网站: https://tide.moreless.io/Android下载量:13,960,000IOS同类排名:52体验版本: Android-2.5.3PS&#xff1a;最近…

c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串

题目题解暴力法我们根据回文字符串特点进行判断一个字符串是不是回文。// 回文子串&#xff1a;首尾对称相等const isPalindrome s > { // abba aba for (let i 0; i < Math.floor(s.length / 2); i) { if (s[i] ! s[s.length - 1 - i]) { ret…

random list随机生成不重复数

有一个需求&#xff0c;需要随机生成六位数&#xff0c;从100001 ---999999但是又要不重复&#xff0c;且不影响性能。如果每次生成都去判断是否重复&#xff0c;当生成的次数足够多&#xff0c;会影响性能。我想的是开一条线程&#xff0c;提前去处理。 提前生成好随机的数。直…

django 默认查询条件_Python之Django系列-创建第一个应用-4

上一篇&#xff1a;Python之Django系列-创建第一个应用-3 上一篇文章我们介绍了创建项目&#xff0c;打开浏览器访问http://127.0.0.1:8000/polls/&#xff0c;能看见"投票主页视图"等描述。本篇文章我们接着上一篇文章继续学习&#xff0c;在Python之Django系列-初始…

Exception in thread “main“ java.lang.IllegalArgumentException: Illegal Capacity: -1

创建list集合下标超出。 模拟场景 我是由于创建list &#xff0c;大小的时候&#xff0c;写反了

三相同步电机怎么接线图_智能电表怎么接线 单相 三相电表接线图大全

电表分为单相电表和三相电表&#xff0c;接线方法又为直入式和互感式&#xff0c;现在我们分电表种类和接线方法&#xff0c;来讲解电表接线。单相电表直入式接线方法&#xff1a;家用单相电表的接线必须是左火L&#xff0c;右零N&#xff0c;左边火线进&#xff0c;火线出&…

window navicat连接阿里云服务器mysql步骤及常见问题

先登录自己的阿里云服务器 这有两个比较重要的&#xff0c;一个是配置出口端口&#xff0c; 还有一个就是拿到自己的公网ip 连接上服务器 我用的是finalshell 工具连接。 主要是基于docker安装mysql &#xff0c;现在我的服务器docker已经安装了&#xff0c;安装也很简单。网…

docker安装mysql并使用navicat连接

创建映射目录&#xff0c;我安装在用户目录下 mkdir ~/mysql mkdir ~/mysql/conf mkdir ~/mysql/logs mkdir ~/mysql/data 分别执行以上命令&#xff0c;创建文件目录 #启动 docker run -id \ -p 3306:3306 \ --namemysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/lo…

linux centos7下载安装zlib

安装nginx 缺少zlib依赖&#xff0c;由于各种环境无法拉取yum安装&#xff0c; yum安装 yum install -y zlib zlib-devel 手动安装 zlib 版本预览 Index of /fossilshttp://www.zlib.net/fossils/ 解压 tar -zxvf zlib-1.2.8.tar.gz 进入加压后的文件 cd zlib-1.2.8 执行…

idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?

北京时间6月23日凌晨1点&#xff0c;苹果在线上举行了WWDC 2020全球开发者大会。给我们正式带来了iOS 14&#xff0c;并且在凌晨3点半时的时候&#xff0c;苹果发布 iOS 14 beta 内测版系统&#xff0c;并提供内测升级方法&#xff0c;随后很多用户已经升级体验。但是尝鲜之后&…

【pcre 依赖】linux安装pcre 依赖

记录转载 一、pcre PCRE(Perl Compatible Regular Expressions)是一个轻量级的Perl函数库&#xff0c;包括 perl 兼容的正则表达式库。它比Boost之类的正则表达式库小得多。PCRE十分易用&#xff0c;同时功能也很强大&#xff0c;性能超过了POSIX正则表达式库和一些经典的正则…

java和c++的区别大吗_小自考本科含金量高吗?小自考和大自考有什么区别?

随着成人教育的普及&#xff0c;自考学历变得越来越常见。但是很多人不知道自学考试考分为小自考和大自考&#xff0c;那么小自考和大自考的区别在哪里&#xff1f;小自考本科的含金量高吗&#xff1f;一、小自考本科的含金量高吗&#xff1f;很多人都想知道小自考本科的含金量…