Ton*_*ony 2 java servlets classloader
我有一个Web应用程序和两个类文件,
第一类是MyClass.class,它位于abc.jar文件(WEB-INF/lib/abc.jar)中,第二类是YourClass.class,它位于classes文件夹(WEB-INF/classes/YourClass.class)中.
我的问题是,当应用程序启动时,哪个类会首先加载?为什么?
根据我的经验,您无法预测JVM加载类的顺序.
一旦我做了一个测试运行器(有点Maven的Surefire)并且使用相同的JVM和OS,它在不同的机器上运行时以不同的顺序加载类.经验教训:
您不应该构建应用程序以依赖类加载顺序
对于"需要"的某些定义,根据需要加载类.加载类时恰好取决于JRE实现,javac实现,究竟是什么线程,服务器代码,当然还有应用程序代码.在这个领域做出假设是一个坏主意.如果你想看看特定运行会发生什么,你可以使用-verbose:class