load file within a jar
I need to package a configuration file within a jar. the configuration file is under the root of the jar file. However I got the following error:
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source)
File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI());
Solution 1:
You should use getResourceAsStream()
instead. If the file is embedded in your JAR the URI is most likely bundle:// URI
InputStream is = this.getClass().getResourceAsStream("my.conf");
Solution 2:
Why do you need a file? IF you need to read the config use
Class.getResourceAsStream("/my.conf");
This will need only to be the file in the one folder with the root of your package( the same as in the root of the jar)
Solution 3:
The file should be in the same package as the MyClass. I just realized you are creating a File object. Instead try using getResourceAsStream(). This is the right way if you want to read the contents from a classpath resource. Here is the example.