Referenciar um arquivo dentro do própio .jar

1 resposta
WashingtonBotelho

- Tenho um programa que simula WebServer, logo digito o IP + Porta + NomeArquivo.
- Então abre o navegador como por exemplo (localhost/index.html).
- Se o arquivo estiver na pasta raiz, ou seja, um nível acima do src abre normal.
- Só que se eu fizer um .jar, os arquivos na pasta raiz não são adicionados, só são se tiver dentro da pasta src. Até ai ok.
- Mas se eu colocar o arquivo dentro da pasta src, seja no pacote padrão (src/index.html) ou dentro de um pacote (src/arquivo/index.html) eu não consigo referencia-lo.

Como eu faria isto? Estou usando:
private void conectar(java.awt.event.ActionEvent evt) {                          
    ip = ipF.getText();
    porta = Integer.parseInt(portaF.getText());
    arquivo = arquivoF.getText();

    if (porta == 80) {
      url = ip + "/" + arquivo;
    } else {
      url = ip + ":" + porta + "/" + arquivo;
    }

    try {
     try {
        Runtime.getRuntime().exec("C:/Arquivos de programas/Mozilla Firefox/firefox.exe " + url);
      } catch (Exception e) {
        Runtime.getRuntime().exec("C:/Arquivos de programas/Internet Explorer/iexplore.exe " + url);
      }
      new Cliente().start();

    } catch (Exception e) {
      System.out.println("Erro Start Server: " + e.getMessage());
    }
}
Obs.:

- Colocar (/src/img/index.html) da File Not Found, porque no .jar não existe pasta src.
- Colocar (/img/index.html) da File Nof Found, porque eu não sei, pois tem a pasta img no .jar.

:roll:

1 Resposta

T

Tanto o Firefox quanto o Internet Explorer não conseguem ler um arquivo .html (e as figuras correspondentes) dentro de um JAR.
Você tem de pegar os arquivos que você precisa dentro do JAR e copiá-los para um diretório temporário.
Para puxar os arquivos, a maneira mais simples é com getResourceAsStream para ler cada o arquivo do JAR, mas você precisa criar os arquivos (com sua respectiva estrutura) usando FileOutputStreams.

Criado 30 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 1
Participantes 2