Olá pessoal estou com um problema (dã). Estou desenvolvendo uma aplicação para calcular alguns coeficientes físicos das madeiras baseado na ABNT NBR 7190. Como na norma existem dezenas de tipos diferentes de madeira catalogadas com seus respectivos coeficientes físicos, estou criando um banco de dados simples para eles em arquivos txt (como podem perceber eu sei apenas o básico de java - nada de SQL ou algo parecido). Criei um package para armazenar esses arquivos (arquivosAux) e criei uma classe para realizar a leitura dos mesmos. Quando executo o programa na IDE (estou usando o NetBeans 8.2) ele roda sem problemas (nenhum exception ou warning aparece) mas quando eu crio o .jar ele não abre. Não dá mensagem de erro ou travamento, nada. Simplesmente não executa. Procurei na internet uma solução para esse problema e encontrei um tópico que me deu uma luz. Fui no prompt de comandos do windows (a versão do sistema operacional do meu computador é o windows 10) e apareceu o seguinte na tela
Exception in thread "AWT-EventQueue-0" java.nio.file.FileSystemNotFoundException
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Unknown Source)
at pilar.Listas.LerArquivosAux(Listas.java:26)
at pilar.Listas.CarregarClasses(Listas.java:44)
at pilar.PilarMadeira$22.run(PilarMadeira.java:1663)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Pelo que eu entendi o aplicativo não encontra o caminho dos arquivos de que eu falei. Eis o código do método que criei para fazer a leitura desses arquivos
private void LerArquivosAux(String caminho, ArrayList<Madeira> tipoMadeira) {
try {
Path path = Paths.get(getClass().getResource(caminho).toURI());
try (BufferedReader lerArquivoAux = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
String linha = lerArquivoAux.readLine();
while (!linha.equals("")) {
String[] DadosClasse = linha.split(";");
Madeira classe = new Madeira(DadosClasse[0],
Double.parseDouble(DadosClasse[1]),
Double.parseDouble(DadosClasse[2]));
tipoMadeira.add(classe);
linha = lerArquivoAux.readLine();
}
} catch (IOException | NullPointerException e) {}
} catch (URISyntaxException e1) {}
}
E aqui onde ele é executado
public void CarregarClasses(){
LerArquivosAux("/arquivosAux/classesConifera.txt", classesConifera);
LerArquivosAux("/arquivosAux/classesDicotiledonea.txt", classesDicotiledonea);
LerArquivosAux("/arquivosAux/dicotiledonea.txt", Dicotiledonea);
LerArquivosAux("/arquivosAux/conifera.txt", Conifera);
}
Aqui é o que está escrito num desses arquivos txt
Angelim araroba;50.5;12876
Angelim ferro;79.5;20827
Angelim pedra;59.8;12912
Cupiúba;54.4;13627
Alguém saberia me explicar o motivo do .jar não encontrar o path desses arquivos mas no NetBeans funcionar perfeitamente? Se poderia dar uma solução ou se eu estou fazendo algo de errado? (como disse acima sei apenas o básico de java)