使用类加载器层次结构有什么好处?

时间:2016-06-18 10:23:29

标签: java jvm classloader

编辑:

我们不能将所有jar都转储到jdk的jre / lib文件夹中,并使用BootstrapClassLoader作为唯一的类加载器吗?

2 个答案:

答案 0 :(得分:1)

Bootstrap类加载器有一个特殊用途,即加载内置类。它是唯一能够做到这一点的类加载器。当您添加URL ClassLoader时,它可以加载其他JAR /目录,但这些不能包含他内置的包。这可以防止JVM被黑客攻击。

简而言之,最小值是2,系统类加载器和用户的类加载器。

答案 1 :(得分:0)

每个项目都有一组不同的依赖项(和不同的版本)。类加载器不能很好地处理同一个类的不同版本 - 它们只是使用它们在classpth上找到的第一个类名称(例如,com.example.MyClass(至少,直到所有内容都在JDK 9中模块化)。所以,你想要的每个项目从不同的路径而不是公共路径加载类。例如,maven项目从$ HOME / .m2 / repository加载它们的依赖项。