classLoader.getResource não funciona no arquivo jar

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL url = classLoader.getResource("com/x/y/z.cfg"); File file = new File(url.getPath()); 

Isso funciona ao executar o arquivo jar do Eclipse, mas não funciona quando executado em um arquivo jar.

java.io.FileNotFoundException: arquivo: \ C: \ Usuários \ nova \ Desktop \ Matcher.jar! \ c om \ x \ y \ z.cfg

Isso não é uma duplicata. Eu verifiquei todas as outras perguntas, nenhuma informação útil.

Quando o arquivo é empacotado dentro do jar, ele se torna um stream de bytes em vez de um object File normal.

Experimentar

 InputStream stram=getClass().getClassLoader().getResourceAsStream(relativePath); 

Mais Tutorial …

Leia post semelhante aqui e aqui

Você não pode criar uma instância de Arquivo, porque o único arquivo que você tem é o JAR. É por isso que getResource () retorna URL. Você pode obter stream usando o método URL.openStream () para ler o conteúdo.