java.io.FileNotFoundException

Eu fiz um projeto no eclipse que está rodando perfeitamente por lá.
Porém, quando gero o jar e tento rodar por linha de comando o seguinte erro aparece:

java.io.FileNotFoundException: resources\maps\empresa (O sistema não pode encont
rar o caminho especificado)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.(Unknown Source)
at br.com.accenture.controller.utils.FileUtils.leMapaTxt(FileUtils.java:
62)
at br.com.accenture.controller.utils.FileUtils.carregaBase(FileUtils.jav
a:45)
at br.com.accenture.controller.utils.FileUtils.(FileUtils.java:40)

    at br.com.accenture.controller.utils.TelaUtils.<init>(TelaUtils.java:17)
    at br.com.aceenture.view.PanelInsercao.<init>(PanelInsercao.java:86)
    at br.com.aceenture.view.TelaForm.<init>(TelaForm.java:62)
    at br.com.aceenture.view.TelaForm.main(TelaForm.java:39)

Exception in thread “main” java.lang.NullPointerException
at br.com.accenture.controller.utils.FileUtils.carregaBase(FileUtils.jav
a:46)
at br.com.accenture.controller.utils.FileUtils.(FileUtils.java:40)

    at br.com.accenture.controller.utils.TelaUtils.<init>(TelaUtils.java:17)
    at br.com.aceenture.view.PanelInsercao.<init>(PanelInsercao.java:86)
    at br.com.aceenture.view.TelaForm.<init>(TelaForm.java:62)
    at br.com.aceenture.view.TelaForm.main(TelaForm.java:39)`

Na minha classe está assim:

private void carregaBase() {
		try {
			ObjectInputStream s = leMapaTxt("resources/maps/empresa");
			this.empresaSiglaMap = (Map<String, Map<String, Site>>) s.readObject();
			
			s = leMapaTxt("resources/maps/servico");
			this.empresaRegionalIdServicoMap = (Map<String, Map<String, Map<Double,Servico>>>)s.readObject();
			s.close();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

meu projeto esta com essa estrutura:

Como eu disse, pelo eclipse roda normal. Alguém saberia o motivo de não rodar pelo jar?

O erro está na implementação do método leMapaTxt

Posta o código dele.

Então o código é esse…
`
private ObjectInputStream leMapaTxt(String path) {
try {
File file = new File(path);
FileInputStream f;
f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
return s;

	} catch (IOException e) {
		e.printStackTrace();
	}
	JOptionPane.showMessageDialog(null, "O programa foi finalizado com erro");
	return null;
}`

como falei, no eclipse roda certinho

Tente passar como parametro o caminho completo deste arquivo dentro do seu computador

Se vc está executando no Windows:
ObjectInputStream s = leMapaTxt("C:\camindo_do_seu_software\resources\maps\empresa");

Se vc está no Mac ou no Linux:
ObjectInputStream s = leMapaTxt("/camindo_do_seu_software/resources/maps/empresa");

Então, mas eu não queria que o caminho ficasse preso ao lugar onde está o jar. Como faço pra colocar o arquivo dentro do programa ?

Dê uma pesquisada no método abaixo:

Thread.currentThread().getContextClassLoader().getResourceAsStream(seu_arquivo_aqui);

O método retorna um InputStream.
Utilizo este cara para carregar arquivos pre-definidos aos quais estão armazenados como resource da minha aplicação. Funciona perfeitamente pra mim.