Gostaria de ler um recurso de dentro do meu jar da seguinte forma:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferredReader reader = new BufferedReader(new FileReader(file));
//Read the file
e funciona bem ao executá-lo no Eclipse, mas se eu exportá-lo para um jar, execute-o, há uma IllegalArgumentException:
Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical
e eu realmente não sei por que, mas com alguns testes descobri que se eu mudar
file = new File(getClass().getResource("/file.txt").toURI());
para
file = new File(getClass().getResource("/folder/file.txt").toURI());
então funciona o contrário (funciona em jar, mas não eclipse).
Estou usando o Eclipse e a pasta com meu arquivo está em uma pasta de classe.
getResourceAsStream
ainda é uma solução mais simples e mais portátil para o problema.