我正在使用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")
返回标准系统类加载器?
答案 0 :(得分:0)
由于开发模式下的编译重载机制,Play的类加载器设置相当复杂。您可能希望使用built-in API methods来访问资源或类加载器,而不是尝试使用普通System.class.getClassLoader()
。