Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: `error - java.lang.IllegalArgumentException: URI is not hierarchical while getting a file from a classpath

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?

like image 810
Daniel Cisek Avatar asked Dec 13 '11 19:12

Daniel Cisek


2 Answers

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);
like image 111
Olivier Croisier Avatar answered Nov 05 '22 05:11

Olivier Croisier


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());
like image 29
laz Avatar answered Nov 05 '22 04:11

laz