解码库加载异常怎么办

开发辅助用到java反射机制动态加载jar文件以解析dubbo接口,实现无消费者情况下调试dubbo服务www.58yuanyou.com。在用户使用过程中发现解析接口一直停留在加载页面没有任何反应,日志也没看到任何异常信息。在开发时已经考虑了各种异常处理,所有操作异常都会打印日志,并toast提示异常信息,所以这个问题排查起来稍微困难些。

根据用户使用反馈,开发辅助提供了从指定文件夹中读取jar文件的功能。这里描述一下问题产生的场景:用户使用时只将服务ap原由网i的jar包放在了指定文件夹,然后开始使用dubbo服务调试功能;当点击服务列表时,界面一直停留在加载中,如前面所描述的情况。所以模拟使用场原由网景,仅将要调试的api包放入指定文件夹开始调试,最终定位到了问题所在,这里不直接说明问题,通过一个代码场景将问题抛出,主是就是JVM URLClassLoader类加载时www.58yuanyou.com异常处理问题。

下面通过一个demo示例来重现该问题,先来描述一下模拟api包的场景,假设下图为api项目。其中有两个类Model和Test,Model中仅有一个方法,方法参数为Test类,而Test类什么都没有,现将该项目打成jar原由网包。

解码库加载异常怎么办

因为问题是class类缺失导致的,所以这里将打包好的ExceptionTest.jar中的Test.class类文件删除。删除之后如下图所示

解码库加载异常怎么办

下面新建一个测试项目,该项目只有一个包含main函数的类。具体代码如下图所示

解码库加载异常怎么办

注释1处jar文件路径是正确的,能正常读取jar文件;

注释2处将ExceptionTest.jar加载到URLClassLoader中;

注释3处通过URLClassLoader加载Model类;

注释4中通过反射获取Model类的方法。

那么问题来了,上图中main函数执行之后哪个System.out信息会输出?

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 解码库加载异常怎么办

文章地址: www.58yuanyou.com/baike/229202.html

相关推荐