Java getClassLoader.getResource()返回null

Java getClassLoader.getResource()返回null,java,classloader,Java,Classloader,之前,我使用ant为我希望从项目中获得的每个应用程序构建了单个jar,并使用java-jar应用程序名调用该应用程序。 我现在开始使用gradle,使用一个jar,并使用 java-cp类的完整路径 除了一个应用程序之外,其他所有应用程序都按预期工作,我现在可以在其中获得一个 尝试加载所需资源时出现空指针异常 如果我将文件移动到类的目录中,该类将再次查找文件,一切都很好,但是将它们放在不同的目录中似乎是有问题的 你有什么建议可以帮助我们找到最好的方法吗 A.有效地调试此程序 B.将文件放在单独的

之前,我使用ant为我希望从项目中获得的每个应用程序构建了单个jar,并使用java-jar应用程序名调用该应用程序。 我现在开始使用gradle,使用一个jar,并使用 java-cp类的完整路径

除了一个应用程序之外,其他所有应用程序都按预期工作,我现在可以在其中获得一个 尝试加载所需资源时出现空指针异常

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

你有什么建议可以帮助我们找到最好的方法吗

A.有效地调试此程序

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

你对A.有效地调试这个问题的最佳方法有什么建议吗

  • 使用
    jar-tvf…
    检查缺少的资源是否确实在jar文件中,以及它在jar.file中是否具有正确的路径名

  • 使用调试器,并在尝试加载资源的代码上设置断点。单步执行,直到您到达拥有绝对资源路径的点。检查一下

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

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


    我想问题可能出在您构建JAR文件的方式上,但是您没有提供任何具体的细节。谢谢-我尝试过用断点调试它-但是它在IDE中工作,而不是在gradle创建的JAR中。您需要使用调试器运行gradle创建的JAR!阅读如何将调试器附加到JVM。