Play Framework 2中的系统类加载器

时间:2014-06-22 17:05:10

标签: java playframework-2.0 classloader

我正在使用Play 2.2.2,我有一个外部jar,试图从同一个jar的根目录加载XML资源。它是使用System.class.getClassLoader().getResource("/Blabla.xml")完成的。 这失败了,因为显然Play有一个奇怪的类加载器层次结构:ReloadableClassLoader和几个父类。此层次结构不包括系统类加载器,也不包括扩展和引导类加载器。

这怎么可能?

我发现使用ClassLoader.getSystemClassLoader()会返回类似于标准类加载层次结构的类加载器层次结构。但我不想触摸上面提到的外部jar,并让System.class.getClassLoader().getResource("/Blabla.xml")工作。

如何让System.class.getClassLoader().getResource("/Blabla.xml")返回标准系统类加载器?

1 个答案:

答案 0 :(得分:0)

由于开发模式下的编译重载机制,Play的类加载器设置相当复杂。您可能希望使用built-in API methods来访问资源或类加载器,而不是尝试使用普通System.class.getClassLoader()