How do I appropriately put and use project resourc

2019-07-25 14:38发布

问题:

I have a project having the following folder:

resources/xml-schemata/someXMLschema.xsd

A class inside my project uses this xml schema to validate xml files before importing them.

This class has a local variable pointing out the schema path:

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

Of course this works locally.

Now I want to put my tool in a jar to give to other people.

But the project using the jar can't find the schema, because of maybe two things:

  • The jar build process has removed the resources folder so that the xml-schemata folder is in the jar root folder.
  • The project doesn't even look inside the used jar, but assumes a local resources/xml-schemata folder.

Which of these could be the problem and how could I solve it?

回答1:

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

this path trying to access file is in Project directory then just access file like this.

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

if your file is in OtherSources/Resources

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

also, most impotently, read and print the current directory:

System.getProperty("user.dir");

that way you'll know what's the relative path you need and it will be easier for you to understand if you are trying to read from a bad path or the resources you need aren't there