PMD规则“使用适当的类加载器”解释?

时间:2016-01-14 10:39:12

标签: java classloader pmd

有以下PMD规则:

  

使用正确的类加载器(严重)

     

在J2EE getClassLoader()中可能无法按预期工作。请改用Thread.currentThread().getContextClassLoader()

可以在某种程度上解释他们的想法吗?究竟什么意思是“J2EE”环境?

1 个答案:

答案 0 :(得分:1)

J2EE环境是指Java Enterprise Edition。在这里,您不要将程序作为JVM上的独立应用程序运行,而是让JEE Application Server(例如Glassfish或Tomcat)为您运行它。

应用程序服务器提供了许多不同的方式来运行程序,例如它们提供并发和分布式执行。 AppServers使用类加载器,有时会有层次结构,例如EAR(Enterprise ARchive)有一个,EAR内部的WAR(Web ARchive)有一个不同的。因此,无法确保始终通过getClassLoader()调用获得正确的ClassLoader。使用Thread.currentThread().getContextClassLoader(),您将始终获得加载应用的ClassLoader。

(注意:这不完全正确,一些应用程序使用ContextClassLoader(如Spring,OSGi)制作技巧。但是,这是获得正确的ClassLoader的最佳方法。)

相关问题