System.class.getResource在Play中不起作用

时间:2018-01-31 19:17:33

标签: java playframework classloader

我有一个游戏项目。 我尝试执行:

System.class.getResource(/a/b/c/d)

它返回null。这是因为类加载器为null。 如果我执行:

play.Application.class.getResource(/a/b/c/d)

有效。 有谁知道如何解决它?

编辑: 我会更清楚 - 我在一个游戏中编写一个项目,依赖于另一个项目A.项目A中的某个地方有一个行代码System.class.getResource(/ .....),其中路径在项目中答:当我在项目中编写使用项目A的代码时,它会在getResource()中使用NullPointerException失败。然后我在我的项目中用两行写了一个简单的函数。一个是System.class,另一个是play.Application.class。第一行返回null,第二行返回路径。

1 个答案:

答案 0 :(得分:0)

几条评论。

这是什么类型的应用程序(例如桌面,服务器应用程序等)。服务器应用程序倾向于使用多个类加载器,因此这会影响资源的位置和不可访问的位置。在任何情况下,System类也可能由其他应用程序中的单独的类加载器加载。

资源是否在应用程序的类路径中?

您使用什么来指示资源的位置。它可以是资源的相对路径或绝对路径,资源应位于应用程序的类路径中。如果您使用绝对路径,我认为您可能需要在定位器字符串中包含初始/(例如/com/mycompany/myproj/mypkg/MyResource.txt而不是com / mycompany / myproj / mypkg / MyResource.txt)。

您还可以使用类似play.getClass()的内容.getResource(“/ com / mycompany / myproj / mypkg / MyResource.txt”)