问题
I have a file contained within a directory in a classpath. It looks like this pl/shenlon/io/gui/appData/file.txt. Now, when I try to convert it to a File and read with this code:
File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
Scanner cns = new Scanner(cityNamesFile);
I get the following:-
error - java.lang.IllegalArgumentException: URI is not hierarchical.
How can I fix this problem?
回答1:
If your calling class is itself in the same package as the text file, just use :
InputStream is = getClass().getResourceAsStream("list.txt");
Scanner cns = new Scanner(is);
回答2:
Replace
File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
with
File cityNamesFile = new File(Thread.currentThread().getContextClassLoader().getResource("pl/shenlon/io/gui/appData/list.txt").getFile());
来源:https://stackoverflow.com/questions/8495069/error-error-java-lang-illegalargumentexception-uri-is-not-hierarchical-whil