Java 从Web应用程序中的jar加载资源

Java 从Web应用程序中的jar加载资源,java,resources,jar,classloader,Java,Resources,Jar,Classloader,我读了所有的问题和答案,但仍然不适合我 在我的web应用程序中,我有一个jar,它包含很少的图像和XML。这些是jar本身中的类所必需的。因此,我修改了所需的行,如下所示: 我使用以下方法更改了jar中的类,以引用资源(存在于jar本身中): Thread.currentThread().getContextClassLoader().getResource(path) // returns null 我以前也试过: MyClassName.class.getResource(path) //

我读了所有的问题和答案,但仍然不适合我

在我的web应用程序中,我有一个jar,它包含很少的图像和XML。这些是jar本身中的类所必需的。因此,我修改了所需的行,如下所示:

我使用以下方法更改了jar中的类,以引用资源(存在于jar本身中):

Thread.currentThread().getContextClassLoader().getResource(path) // returns null
我以前也试过:

MyClassName.class.getResource(path) // null again
我读了很多关于这方面的书,并且知道后面的代码行将能够获取资源,但不幸的是,这两个代码对我都不起作用……我是否遗漏了什么

注意:在Tomcat7上运行,由于我在Vista上运行,所以我得到的“路径”值为“\myFolder\images”


谢谢

当从jar中加载资源时,有几点必须注意,jar是嵌入在web应用程序中的

  • 加载文件与加载资源不同。当我们使用
    File.separator
    时,通常是w.r.t文件和绝对路径。不建议将其用于加载资源
  • 从jar中加载资源时,请确保您没有使用
    File.separator
    ,也没有使用正常的“/”,因为它是jar的相对路径
  • 如果您正在从jar中的xml读取属性…并且该属性引用了另一个位置,请确保您正在使用“/”斜杠读取该属性。同样,
    File.separator
    将无法加载资源,因为它将用“\”替换“/”(windows系统)
  • 最后,在jar代码中加载资源时,请使用以下行

    MyCurrentClass.class.getResource(路径)


  • 希望它能帮助人们在web应用程序中处理jar中的xml

    您正在使用的确切路径值是什么,以及您的一个或多个资源文件的位置是什么?该路径是从jar中的另一个config.xml中选择的(读起来非常好)。。xml中给出的路径是“/alpha/images”,即MyJar.jar | | | | | | | | | | | | | | | | | | | | | | | | | | | | |但?它需要根据您使用的是类装入器还是类方法来查找资源而有所不同。“类”版本的路径(我推荐)应该类似于“images/myImage.gif”。这假设您的图像位于当前类的包文件夹的images子文件夹中,并且图像文件名为myImage.gif。谢谢您提供的信息。经过多次挖掘,我终于找到了答案。现在回答