Leitura e execução de arquivo dentro do JAR

  • Dei uma procurada no forum mas não encontrei nada que ajudasse.
    Não faço idéia de como fazer isso.
    Tenho la meu projeto bunitinho e dentro da SRC tenho um determinado arquivo
    quero ter acesso a ele, executa-lo. Ex:

  • arquivo.jar
    ---- main.class
    ---- pagina.html

O que eu faço para executar o pagina.html? Assim conseqüentemente ele será aberto no navegador.
Mas uma função genérica, de EXECUÇÃO, não estou usando somente html, mas txt, doc e etc.

Mas acho que isso não vai ser possível, em ultimo caso poderia ser algo do tipo:
Ler os arquivo dentro do JAR e ‘exportar’ todos para a pasta onde se encontra o JAR e executar eles.(que também não faço idéia de como fazer)

Nada? Me ferrei?

URL arquivoDoJar = getClass().getClassLoader().getResource("pagina.html");
File file = new File(arquivoDoJar.getFile());

Para copiar da uma procurada sobre FileChannel, o ViniGodoy ou alguém já deve ter falado sobre isso no fórum.

Para executar use a classe Desktop.

Ou então usar a classe Runtime.

Valeu cara! Vou ver mais sobre o FileChannel ai posto aqui o resultado se funfou ou não.

Cara não consigo baixar essa api Desktop, to usando o netbeans e nele nao tem, e no google soh vem porcaria, tu tem o link ae?(Não encontrei no site da sun)

Opa… estou com o mesmo problema… tenho o seguinte no projeto (exemplo):

Projeto/
/src/Programa.class
/src/MyUtil.class
/src/desenhos/myGif.GIF
/src/desenhos/myJPG.JPG

/src/desenhos/myText.txt

O que me deu um jar com:
/MANIFEST.MF
/Programa.class
/MyUtil.class
/desenhos/myGif.GIF
/desenhos/myJPG.JPG

/desenhos/myText.txt

A idéia eh que o Programa.class acesso os arquivos dentro da pasta desenhos… de primeiro momento tentei:

File myText = new File("/desenhos/myText.txt"); System.out.println(myText.canRead());
Já que estou executando a partir do raiz, seria so continuar com o caminho… mas não deu certo…
Procurando no fórum vi sobre Class.class.getResource(“arquivo”);
mas tb não deu certo… li tb sobre JarFile, mas não adianta… pois já estou no arquivo jar…

Alguns tópicos que li:
http://www.guj.com.br/posts/list/0/132747.java#792334
http://www.guj.com.br/posts/list/15/122130.java
http://www.guj.com.br/posts/list/0/126165.java#792309
http://java.sun.com/docs/books/tutorial/deployment/jar/jarclassloader.html

Mais alguma dica ???

Vlw

Assim funciona:

URL url = getClass().getResource("/desenhos/myText.txt");
File f = new File (url.toURI());
// faça o que precisar
// ou assim:
URL url2 = getClass().getResource("/desenhos/myGif.GIF ");
Imagem i = ImageIO.read(url2);