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

删除回忆录丶 提交于 2019-12-04 18:51:00

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!