0%

双亲委派模型是 JVM 类加载器的工作模式。要理解它,可以先想一个问题:当你写下 java.lang.String 时,怎么保证你加载的 String 是 JDK 的核心类,而不是你自己写的、可能包含恶意代码的 String?

双亲委派就是用来解决这个安全问题避免重复加载的机制。

1. 问题背景:Java模块系统的封装限制

1.1 问题的起源

在Java 16及更高版本中,许多使用CGLIB进行动态代理的应用程序会遇到类似的异常:

1
2
java.lang.IllegalAccessException: class X cannot access class Y (in module Z) 
because module Z does not export Y to unnamed module

这个问题的核心在于Java模块系统(Java Platform Module System, JPMS)引入的强封装机制。