Here's my structure:
- com/mycompany/ValueReader.class
- com/mycompany/resources/values.xml
I can read the file in my Eclipse project, but when I export it to a .jar it can never find the values.xml.
I tried using ValueReader.class.getResource() and ValueReader.c开发者_如何学编程lass.getResourceAsStream() but it doesn't work.
What's the problem here? How do I get a File-object to my values.xml?
B.
You can't get a File
object (since it's no longer a file once it's in the .jar), but you should be able to get it as a stream via getResourceAsStream(path);
, where path
is the complete path to your class.
e.g.
/com/mycompany/resources/values.xml
You can't get a File
for the file because it's in a jar file. But you can get an input stream:
InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml");
getResourceAsStream
and getResource
convert the package of the class to a file path, then add on the argument. This will give a stream for the file at path /com/mycompany/resources/values.xml
.
This will work...
Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml")
You can extract the jar then take what you want, in the same class-path using :
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new
FileInputStream(zipfile.getCanonicalFile())));
精彩评论