2010-11-09 88 views
4

如何查找嵌入到jar中的xml(static myXml.xml)文件的路径?显然不是绝对的路径,但我面临着与相对路径相同的问题。我无法获取它相对于主文件夹,因为Java返回不同的主文件夹,具体取决于我调用访问Java类的位置。例如,从:如何在Java中解析静态文件的路径?

  • 命令提示符
  • 应用服务器
  • Eclipse启动
  • Eclipse的远程调试器等

有什么方法,我的访问类(装在同一个JAR)可无论jar文件在哪里以及谁试图访问它,访问嵌入式xml?

回答

6

你需要做的是使用类加载器加载该文件:

InputStream stream = this.getClass().getClassLoader(). 
               getResourceAsStream("myXml.xml"); 

上面的代码假定该文件是在您的罐子顶部水平。

+1

而对于静态类MyClass.class.getResourceAsStream(“myXml.xml”)。有用。谢谢 – WSK 2010-11-09 17:54:55

0

你是否尝试过类类中的getResource和getResourceAsStream方法?通常这些是我在这些情况下必须采取的措施。

希望这会有所帮助。

0

您可以使用ClassLoader#getResource(..)获得从classpath的文件的InputStream:

Object.class.getClassLoader().getResource().openStream() 

还有一些在ClassLoader的一些其他的方法可能是你的情况是有用的。