自定义Classloader导致ClassCastException
背景 java.lang.ClassCastException: cn.com.nightfield.Plugin cannot be cast to cn.com.nightfield.Plugin 相同的class,竟然不能cast?这是什么鬼? 问题描述 自定义类加载器(Classloader)是很常见的,它可以让我们从自定义的文件系统目录,网络甚至是数据库的各种文件类型(jar, war, zip等)中加载class文件。 我们项目中使用了一个开源的类管理工具PF4J,来加载指定目录下的class文件。但奇怪的是,当我们把class加载进来之后,将它强转为目标类型,却报了java.lang.ClassCastException,两者明明是同一个class! 问题分析 先说明,错误是跟自定义类加载器有关。上一个小demo来模拟一下上述错误: package cn.com.nightfield.jvm.classloader; // 在class path下定义一个类 public class Plugin {} package cn.com.nightfield.jvm.clas...
