[RESOLVIDO] Abrir arquivo swf dentro do mesmo jar

10 respostas
R

Olá! Sou novato no fórum, em POO e no Java, mas estou adorando a linguagem.

Meu problema é o seguinte: criei um pequeno programa Desktop (será exclusivo para rWindows) em Java, e ao lado dele tenho um arquivo swf, e ambos farão parte do mesmo .jar, então eu quero simplesmente fazer com que meu programa chame o arquivo .swf!

Já pesquisei bastante, já li sobre getClass().getResourceAsStream(), DJNativeSwing (que parece poder funcionar em conjunto com o NetBeans, mas eu nem entendi como fazer funcionar), e outras coisas, mas como sou iniciante não tive sucesso… :cry:

Vejam que o que eu quero é muito simples: apenas abrir um swf que está no mesmo jar que meu programa!

Clicar duas vezes no swf faz o windows reconhecer o formato e chamar o flashplayer que estiver instalado, então tem algum jeito simples de fazer isso acontecer através de um comando java??

Agradeço muito qualquer ajuda! :thumbup:

10 Respostas

L

Eu to querendo basicamente a mesma coisa!

Executando pelo NetBeans eu consigo, o problema é executar direto do .jar :?

E

O Flash Player não consegue ler o arquivo se ele estiver dentro do Jar. Favor extrair o arquivo do jar e pôr em um lugar em que o Flash consiga encontrá-lo.

R

Luan Kevin:
Eu to querendo basicamente a mesma coisa!

Executando pelo NetBeans eu consigo, o problema é executar direto do .jar :?

Pois é! Já vi dizerem que teria que extrair de dentro do jar (talvez para uma pasta temporária), pra daí poder mandar executar, e depois apagar a pasta temporária…

É muita complicação pra uma coisa tão simples! Deve ter algum jeito mais fácil de se resolver isso.

O que acho mais estranho é que o Java (já na versão 7) não tem suporte pra isso diretamente :hunf:

Aí parece que tem que instalar bibliotecas, plugins, etc. pra poder fazer isso… Já tá me dando desespero aqui.

E

O que posso fazer? É coisa do Adobe Flash Player. Quem faz o Java é a Oracle, não a Adobe. Portanto, para resolver esse problema, você deve extrair o arquivo .swf dentro do jar (não é tão difícil quanto parece) e copiar para um diretório temporário.

R

Entendi… Vou tentar esse método, já que não tem jeito de fugir… (e obrigado pela resposta! :thumbup: )

Uma outra dúvida que tenho, mas isso acho que é bem mais avançado:
Sei que arquivos .jar são mais ou menos como um .zip, e que podem ser extraídos (o que é péssimo para a segurança). Será que tem alguma forma de poder impedir que o .jar seja descompactado diretamente (através de Winzip, Winrar ou outros programas externos)?

E

Pode.
Você pega o fonte do OpenJDK e muda o formato de JAR para algum outro formato seu proprietário (digamos um zip compactado e criptografado). Como os fontes são em C e C++ você terá de ser expert nessas linguagens. Provavelmente você também terá de mexer na parte Java.
Vai dar um trabalhão dos infernos (eu confesso que já tentei fazer uma coisa dessas e não deu muito certo).
Além disso, seu programa somente será rodável pela sua versão compilada das DLLs e executáveis do OpenJDK que você modificou.

R

entanglement:
Pode.
Você pega o fonte do OpenJDK e muda o formato de JAR para algum outro formato seu proprietário (digamos um zip compactado e criptografado). Como os fontes são em C e C++ você terá de ser expert nessas linguagens. Provavelmente você também terá de mexer na parte Java.
Vai dar um trabalhão dos infernos (eu confesso que já tentei fazer uma coisa dessas e não deu muito certo).
Além disso, seu programa somente será rodável pela sua versão compilada das DLLs e executáveis do OpenJDK que você modificou.

Que ótimo! Mesmo que dê trabalho, pelo menos agora eu sei que existe um jeito de fazer. 8) :slight_smile:
Obrigado mais uma vez! :thumbup:

Além disso, também pretendo usar o ofuscamento de código (ainda não sei exatamente como fazer, mas pelo pouco que li isso é essencial para proteção do código, mesmo que não seja 100% garantido).

Obrigado a todos! Ainda aceito quaisquer outras sugestões!!

L

entanglement:

Uma outra dúvida que tenho, mas isso acho que é bem mais avançado:
Sei que arquivos .jar são mais ou menos como um .zip, e que podem ser extraídos (o que é péssimo para a segurança). Será que tem alguma forma de poder impedir que o .jar seja descompactado diretamente (através de Winzip, Winrar ou outros programas externos)?

tem um jeito de dar uma dificultada nessa parte, e é bem simples, usando o JSmooth, esse programinha pega teu JAR e joga pra dentro de um .exe dá pra alterar o ícone e umas outras coisas bem bacanas, além disso você pode ofuscar seus fontes usando o Proguard :thumbup:

R


tem um jeito de dar uma dificultada nessa parte, e é bem simples, usando o JSmooth, esse programinha pega teu JAR e joga pra dentro de um .exe dá pra alterar o ícone e umas outras coisas bem bacanas, além disso você pode ofuscar seus fontes usando o Proguard :thumbup:

Opa! Muito bom saber disso! Já ouvi falar sobre o Proguard (que é justamente o que pretendo usar), mas ainda não conhecia esse JSmooth.
Muito obrigado pela dica! :thumbup:

Ainda estou com algumas dificuldades para extrair a pasta e arquivos que preciso para temporário…
Quando conseguir resultados vou postar.

Continuo aberto a sugestões!

R

RESOLVIDO! Consegui fazer a extração para um arquivo temporário através do código neste tópico:

http://www.guj.com.br/java/78395-abrir-pasta-dentro-de-um-jar-em-execucao

Infelizmente, parece que alguns Firewalls perturbam a “mexeção” em arquivos rWindows, mas no meu caso vou colocar um alerta de que isso pode acontecer para quem for utilizar meu programa.

Muito obrigado a todos! :thumbup:

Criado 20 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 10
Participantes 3