class.getClassLoader.getResource()返回null

时间:2017-11-28 10:43:33

标签: java classloader

之前我使用ant构建了单个jar,我希望从我的项目中使用java -jar application-name调用应用程序。 我现在已经开始使用gradle并拥有一个jar并调用应用程序 java -cp fullpath-to-class。

除了一个我现在得到的应用程序之外的所有应用程序,一切都按预期工作 尝试加载所需资源的空指针异常。

如果我将文件移动到正在查找文件的类的目录中,一切都很好,但将它们放在不同的目录中似乎是有问题的。

您对

的最佳方法有任何建议吗?

一个。调试这个有效的

B中。将文件放在单独的目录中

1 个答案:

答案 0 :(得分:0)

  

对于有效调试此问题的最佳方法,您有什么建议

  1. 使用jar -tvf ...检查缺少的资源是否实际存在于JAR文件中,并且它在JAR.file中具有正确的路径名

  2. 使用调试器,并在尝试加载资源的代码上设置断点。单步直到达到绝对资源路径的程度。检查一下。

  3.   

    B中。将文件放在单独的目录中

    嗯。我不确定你的实际问题是什么,但我的猜测是它与解析相对资源路径名有关。我建议改用绝对资源路径名。

    我想问题可能在于您构建JAR文件的方式,但是您没有提供有关如何执行此操作的具体细节。