如何在Java中解析静态文件的路径?

时间:2010-11-09 17:28:32

标签: java jar

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

  • 命令提示符
  • App server
  • Eclipse启动器
  • Eclipse远程调试器等

有没有我的访问类(打包在同一个jar中)可以访问嵌入式xml,无论jar文件存在于何处以及谁正在尝试访问它?

3 个答案:

答案 0 :(得分:6)

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

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

上面的代码假定文件位于jar的顶层。

答案 1 :(得分:0)

您是否尝试过Class类中的getResource和getResourceAsStream方法?通常这些是我在这些情况下必须诉诸的。

希望这有帮助。

答案 2 :(得分:0)

您可以使用ClassLoader#getResource(..)从类路径中获取文件的InputStream:

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

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