openfire 部署后报错: java.lang.IllegalArgumentException: interface xx is not visible from class loader
2024-08-25 12:53:18
该异常是创建代理时加载接口的类加载器与创建时传入的不一致。
在本地eclipse做openfire二次开发,本地运行没错,部署到服务器上后报异常:
java.lang.IllegalArgumentException: interface xx is not visible from class loader。
根据异常信息,可知是动态代理时出错的。而在之前部署过却没有这异常发生。
从日志上分析,可以找到抛异常的地方是:
由于服务器上不能断点分析,以及无法修改jdk添加日志,通过复制关键代码到自己代码开始抛出异常处打印日志,发现:
Class<?> interfaceClass = null;
try {
interfaceClass = Class.forName(interfaceName, false, loader);
} catch (ClassNotFoundException e) {
}
if (interfaceClass != interfaces[i]) {
throw new IllegalArgumentException(
interfaces[i] + " is not visible from class loader");
}
interfaceClass 为null值。 然后对比之前的开发代码:
之前:
public RPCGameAction gameAction = (RPCGameAction) Container
.createRemoteService(RPCGameAction.class, "gamecenter"); 现在:
public RPCGameAction getGameAction(String prefix)
{ return (RPCGameAction) Container
.createRemoteService(RPCGameAction.class, prefix);
} 而创建代理的代码中的获取类加载器的代码为:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
前者会在初始化的时候已经创建好,而后者会根据运行时的ClassLoader而创建,而openfire加载插件的类加载器跟运行的不一致,从而导致创建失败。
解决的方法可以是:RPCGameAction 这个代理随插件启动而创建到内存中;
把接口所处的jar包放到../openfire/lib 目录下。
最新文章
- asp.net mvc在windows server 2003上部署
- paper 103:ELM算法
- 简单的3个SQL视图搞定所有SqlServer数据库字典
- MySQL常用SQL/函数汇总(持续更新)
- Codeforces Round #369 (Div. 2) C. Coloring Trees(dp)
- Qt Creator介绍
- 如何正确选择MySQL数据列类型
- 自己动手学TCP/IP–http协议(http报文头)
- aspnet-webapi-2-contrib
- mdadm命令详解及实验过程
- Swift JSON字符串和字典以及数组的互转
- docs actifio
- CUDA Fortran for Scientists and Engineers第二版翻译
- python基础(四)集合
- Set tooltip on customized tab header in WPF
- dedeampz安装wordpress程序,然后新增数据库方法
- 我的JdbcUtils类
- 【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理
- ASP.NET C# 获取当前日期 时间 年 月 日 时 分 秒
- VS2010属性表的建立与灵活运用
热门文章
- 转:iPhone上关于相机拍照的图片的imageOrientation的问题
- 使用 Collections 实现排序 sort方法 对List 实体类实现Comparable类 示例
- windows10安装ipython jupyter
- NOIP2011 提高组 Day1
- stl空间配置器简介
- centos6安装elasticsearch6.0
- 2016-2017-2 《Java程序设计》第六周学习总结
- ECMAScript 6中的var,let,const
- [转]QList内存释放
- 2016.5.21——Compare Version Numbers