Ошибка: `error - java.lang.IllegalArgumentException: URI не является иерархическим при получении файла из пути к классам - PullRequest
12 голосов
/ 13 декабря 2011

У меня есть файл, содержащийся в каталоге в classpath.Похоже, это pl/shenlon/io/gui/appData/file.txt.Теперь, когда я пытаюсь преобразовать его в файл и прочитать с этим кодом:

File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
Scanner cns = new Scanner(cityNamesFile);

я получаю следующее: -

error - java.lang.IllegalArgumentException: URI is not hierarchical.

Как я могурешить эту проблему?

Ответы [ 2 ]

7 голосов
/ 13 декабря 2011

Если ваш вызывающий класс сам находится в том же пакете, что и текстовый файл, просто используйте:

InputStream is = getClass().getResourceAsStream("list.txt");
Scanner cns = new Scanner(is);
6 голосов
/ 13 декабря 2011

Заменить

File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());

на

File cityNamesFile = new File(Thread.currentThread().getContextClassLoader().getResource("pl/shenlon/io/gui/appData/list.txt").getFile());
...