2012-03-27 67 views
0

我阅读了所有带有答案的问题,但它仍然不适用于我。从Web应用程序的jar中加载资源

在我的web应用程序中,我有一个包含少量图像和xml的jar。这些是该jar本身中的类所必需的。所以我修改了所需的线路如下:前

Thread.currentThread().getContextClassLoader().getResource(path) // returns null 

我也试过:

我使用改变了我的罐子指资源(这是目前的jar本身内部)中的类

MyClassName.class.getResource(path) // null again 

我读了很多关于这一点,一定要知道的代码更晚的线将能够拿起资源,但遗憾的是没有的工作对我来说......我失去了什么?

注:运行在Tomcat7和因为我在Vista上运行,我得到的“路径”值“\ MyFolder文件\图像\”

感谢

+1

什么是你正在使用的确切路径值和最新罐子内的资源文件或文件的位置? – davidfrancis 2012-03-27 22:54:47

+0

路径从jar中的另一个config.xml中挑选出来(这是完美的读取).xml中给出的路径是'/ alpha/images',即 MyJar.jar | | ___ alpha | | ____images 但因\ windows \的\ alpha \图像的变化(我想这是唯一的原因?) – Akshat 2012-03-28 05:35:09

+0

你能给出你传递给getResource方法的确切路径值吗?它需要根据您使用类加载器还是类方法来查找资源而有所不同。 “类”版本(我建议)的路径应该是像“images/myImage.gif”。这假定您的图像位于当前类的包文件夹的图像子文件夹中,并且图像文件称为myImage.gif。 – davidfrancis 2012-03-28 07:46:51

回答

1

有一个必须注意,当几个点从jar中加载资源,并将其嵌入到Web应用程序中

  1. 加载文件与加载资源不同。当我们使用File.seperator时,它通常是w.r.t文件和绝对路径。不建议加载资源。
  2. 从jar中加载资源时,确保没有使用File.seperator并使用正常的'/',因为它是jar的相对路径。
  3. 如果您正在从jar中的xml读取属性...并且该属性引用了另一个位置,请确保您正在使用'/'斜杠读取它。同样,File.seperator不会加载资源,你的罐子代码加载资源时,请使用以下行

    MyCurrentClass.class工作,因为它会取代“/”与“\”(Windows系统)

  4. 最后。的getResource(路径)

希望它可以帮助人们对付个XML的Web应用程序

相关问题