如何使用构建的jar适当地放置和使用项目资源?

时间:2013-08-26 09:10:25

标签: java jar relative-path

我有一个包含以下文件夹的项目:

资源/ XML的图式/ someXMLschema.xsd

我的项目中的一个类使用此xml架构在导入之前验证xml文件。

此类有一个指向架构路径的局部变量:

schemaFilePath = "resources" + File.separator + "xml-schemata" + File.separator + "someXMLschema.xsd"

当然这适用于本地。

现在我想把我的工具放在一个罐子里给别人。

但是使用jar的项目找不到架构,因为可能有两件事:

  • jar构建过程已删除resources文件夹,因此xml-schemata文件夹位于jar根文件夹中。
  • 项目甚至没有查看使用过的jar内部,而是假定本地资源/ xml-schemata文件夹。

其中哪些可能是问题,我该如何解决?

1 个答案:

答案 0 :(得分:0)

 File f1 = new File("..\\..\\..\\config.properties");  

尝试访问文件的路径位于Project目录中,然后只访问这样的文件。

File f=new File("filename.txt");

如果您的文件位于OtherSources/Resources

this.getClass().getClassLoader().getResource("relative path");//-> relative path from resources folder

最重要的是,读取并打印当前目录:

System.getProperty("user.dir");

这样你就会知道你需要的相对路径是什么,如果你试图从错误的路径中读取或者你需要的资源不存在,你就会更容易理解