简体   繁体   中英

adding relative directory to java classpath and using ClassLoader().getResourceAsStream(“”)

Is it possible to add a relative directory (ie, foo/bar/plugh) to the java classpath and use

InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");

To fetch foo/bar/plugh/xyzzy.properties?

My classpath looks like this:

foo.jar;foo/bar/plugh;xyz.jar 

And I am able to use classes and resources from both foo and xyz jars but not from the plugh directory. In those cases, in is always null.

I can't get this to work and am not sure if this is just unsupported, I am missing something subtle or if I'm doing something wrong. Do I need to use an absolute path?

Maybe I'm misunderstanding what you're trying to do, but if you have a folder in your classpath, that means all the files underneath it should be in the classpath as well. If not, you can always pass each .properties file on the class path.

But either way, since the file/folder that contains the file is in the classpath, you should just be able to do:

InputStream in = new FileInputStream("classpath:xyz.properties")

And since "foo/bar/plugh" is in the classpath, one of the places it will look for xyz.properties is in "foo/bar/plugh".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM