Criacao de exe e jar

92 respostas
F

dae galera,
tem muita gente q fica perguntando como se cria .exe e .jar, entaum criei esse topico para deixar aki as respostas :grin: (algum moderardor deixa fixo por favor)

EXE: existem programas q geram um .exe do seu prog java, mas n vale a pena, pois esse progs simplesmente incluem o JRE dentro do .exe, entaum o programa fica com mais de 10MB! existem alguns q criam um .exe q usa o JRE do computador do usuario, nesse caso o programa fica leve, porem a unica coisa q vc faz eh jogar a portabilidade q eh a principal vantagem de java fora… o ideal eh criar um arquivo .jar…

JAR: nesse artigo escrito pelo jeveaux esta espicado como criar um arquivo .jar http://www.portaljava.com.br/home/modules.php?name=Content&pa=showpage&pid=7

se houverem duvidas postem nesse post…

espero ter ajudado :grin:

92 Respostas

C

Irmao, parabens kra, fico bem organizadao mesmo!!!

Valeu pela contribuicao!! :razz:

Abracao e te +

R

iai Galerinhaaa!!!

Viva o .jar !!!

cara, ja tentei algumas vezes criar manualmente mas nunca funciona… rsrs… usando uma IDE é facin, mó esquema… :wink:

é bom ter esse tópico fixo pq pelo jeito a galera ta com preguiça de procura o assunto, ai ja sai perguntando, entrando aqui ja da de cara com o tema… rs

T+ :cool:

F

Voce ta falando o tamanho do .exe é 10MB, ou seja o tamanho do arquivo executavel, ou a quantidade de memória principal que ele oucupa quando executa?

Porque eu até criei um tópico sobre isso.

Usando memória demais…

A

legal… gostei paca…mandou bem…

M

Salve Felipe!!!

Cara ficou muito bom seu tutorial!!! Está de parabéns!!!

Até mais!

F

Voce ta falando o tamanho do .exe é 10MB, ou seja o tamanho do arquivo executavel, ou a quantidade de memória principal que ele oucupa quando executa?

Porque eu até criei um tópico sobre isso.

Usando memória demais…

os 10MB de memoria vao ser ocupados mesmo se for um .jar… esses 10MB sao por causa da JVM, entaum sendo .exe ou .jar vai ocupar do mesmo jeito… porem, com o .exe o arquivo vai ter mais de 10MB, pois ele inclui a JVM no arquivo…

existem tb alguns programas q geram .exe pequenos, porem eles usam a JVM q esta instalada no computador do usuario, e ainda assim vai ocupar os 10MB de ram, a unica coisa q acontece gerando esse .exe pequenos eh q vc perde a portabilidade…

G

Olá, vocês estão falando do tamanho do .EXE … Existem programas que “comprimem” o executável diminuindo seu tamanho…

Não seria o caso áí para este .EXE feito em java…???

O que acham…???

Até…

F

“Ghost-in-the-shell”:
Olá, vocês estão falando do tamanho do .EXE … Existem programas que “comprimem” o executável diminuindo seu tamanho…

Não seria o caso áí para este .EXE feito em java…???

O que acham…???

Até…

vc por acaso n esta falando do JBuilder?

o JBuilder n comprime, ele apenas gera um .exe q utiliza o JRE.

ou seja, o usuario ainda vai pracisar ter o JRE instalado na maquima… e vc ainda vai perder a portabilidade…

e caso exista algum prog q gere um .exe com o JRE incluso e depois comprima, ainda assim o programa vai ficar pessado (os programas Java costumam ser MUITO leves, geralmente o q pesa sao as imagens e multimedia)… e de qualquer forma, vc vai estar jogando a portabilidade fora…

G

Eu tô falando de programas como o AsPack… Não sei se já ouviu falar… Parece que ele “retira” os espaços em branco, comentários, tudo que o compilador não vai ler no executável, deixando-o bem mais leve…

Até…

F

“Ghost-in-the-shell”:
Eu tô falando de programas como o AsPack… Não sei se já ouviu falar… Parece que ele “retira” os espaços em branco, comentários, tudo que o compilador não vai ler no executável, deixando-o bem mais leve…

Até…

mas os espacos em brancos e comentarios sao ignorados por todos os compiladores de todas as linguagens, inclusive para se fazer os .class, e os .jar… os programas q geram .exe com certeza tb ignoram os comentarios…

G

Bom, então eu boiei… Mas existe um programa que realmente comprime o executável… Exemplo… Se ele tem 4MB, diminue pra 800KB, por aí, entende…???

Eu imaginava que ele funcionava assim, mas agora fiquei intrigado…

T

Kra. Valeu mesmo por esse tutorial.
Bem simples e fácil de entender!

Realmente o mundo JAVA é fascinante.

Acho que estou me apaixonando por ele.

F

Mais facinante q o próprio java é a plataforma Eclipse… Fenomenal!!! Com ela tudo é mais fácil… O mundo será perfeito no dia que os recursos do Delphi forem unidos ao Eclipse!!!

M

Um .exe é uma otima pedida a quem quer fazer algo facil e simpler para o end user e usando sua linguagem preferida.

Alem do fato que alguns compiladores tem o .exe mais rápido que o método normal (seja compilado, interpretado, mixed…)…

Eu não gosto de C# e prefiro muito mais usar um .exe do que fazer uma gambiarra horrenda pra rodar o negócio no sistema do usuário…

Agora, se o windows viesse como padrão pra considerar o .JAR como executável (e automaticamente rodar a JVM) aí seria outros 500…

F

O Jbuilder cria os bin+arios nativos…

Para o caso do Unix ele cria o executável nativo e ao mesmo tempo cria o executável para Win32(.exe). Os arquivos ficam bem leves. Só que quando fui tentar rodar o executável que eu criei com o jbuilder 8.0 ele não funcionou. Nao sei o que foi.

Bem quando ao fato de usar executáveis ou não, acho o seguinte:

Na maioria dos casos, os clientes usam o windows, e se ao invés de ficar fazendo gambiarra na máquina do cliente, coloca lá um .exe e um .jar.
Pronto o cara já consegue criar atalhos normalmente sem precisar ligar pra ninguém. Caso ele mude para linux. aí é só vc usar o .jar.

Dá tb pra criar um arquivo .bat no mesmo diretório da classe com uma linha de comando simples, como por exemplo:

@echo off
javaw Nome_da_classe

pronto, o programa já roda legal.

Lembrando que o “javaw” difere do “java” pq não exibe a janela do MS-DOS.

t+ galera

F

o seu arquivo .exe gerado pelo JBuilder usa o JRE instalado na maquina da mesma maneira que o .jar… entaum usar esse exe do JBuilder eh o mesmo que um .jar, jah q o usuario vai apenas dar um duplo click no arquivo .jar e vai rodar como um .exe…

e tipo… se n me engano exite um prog para gerar o arquivo de instalacao q instala automaticamente o JRE e poe o .jar na pasta q o usuario escolheu… dai n tem rolo nenhum pro en-user… se n me engano o nome eh InstallAnyWhere, nunca usei, mas parece q ele gera instalacao pra ruwindows e pra linux… alguem poderia me confirmar isso?

P

Gente como se cria um binário (.bin) pro Linux?! Seria mais interessante do que o .jre que tem que executar pelo console do mesmo jeito!!

Obrigado
T+

W

Acho que estou um pouco atrazado nesse topic...

Olá, vocês estão falando do tamanho do .EXE ... Existem programas que "comprimem" o executável diminuindo seu tamanho... 

Não seria o caso áí para este .EXE feito em java...??? 

O que acham...??? 

Até...

Acredito que nosso colega estava se referindo a um ofuscador.. que realmente diminui o tamanho do executavel.. pois encurta o nome das variáveis, entre outras coisas... deixando o código bem menor. (Além de deixar o código ilegível para evitar que outros descompilem seu programa e o leiam).

F

Eu segui os passos pra criação do .jar e funcionou direitinho…
O único problema é que o .jar não consegue acessar o BD…
Eu creio que seja porque ele não esteja reconhecendo os “imports” do source do JSDK…
Alguém saberia me dizer o que eu fiz de errado, ou como fazer pra poder indicar os sources dentro do arquivo .jar???

R

Frankie, bem-vind

qndo vc tiver com um problema, é bom postar o erro (ou exception) q esta ocorrendo

se possível, poste o trecho do código onde esta ocorrendo o problema

F

Obrigado pela recepção microfilo…

Mas o problema é esse, como ele roda direto do jar não tem como ver qual tipo de erro ou exception está ocorrendo…
O q acontece é que qdo eu rodo o programa pelo NetBeans ele funciona normal, mas qdo eu rodo pelo jar, ao clicar no botão “Salvar” do cadastro, por exemplo, não acontece nada.
Então a suspeita minha é de que o NetBeans guarda num lugar as pastas de lib e src da plataforma JSDK…e qdo eu rodo o jar ele não reconhece os “import java.sql.*” da vida…
Eu já joguei o CLASSPATH(lib e jre/lib) e PATH(bin) do JSDK nas variáveis de ambiente do win xp.
Bom, se alguém puder ajudar eu agradeço, já que comecei a mexer com java há pouco tempo e ainda tô cheio de vícios do Delphi!

N

Cara,

Eu segui exatamente o seu tutorial, blz.
Mas ele naum consegue achar a classe.

Ele cria o jar, mas quando eu dou os 2 cliques ele mostra essa msg:

“Could not find the main class. Program will exit.”

Mt grato.

Euclydes

R

Frankie:

vc pode rodar um .jar pelo console, assim vc vera a slacktrace…
para rodar um programa encapsulado em um .jar pelo console:

java -jar arquivo.jar

newInJava:

seja bem-vindo

o problema é que vc não definiu a sua classe principal (main-class)
para defini-la vc deve criar um arquivo chamado manifest, e nele vc deve indicar a main-class

ex:

Main-Class minhaClasse.class

L

Ok! Realmente perderia a portabilidade em se usar a JVM nativa do sistema operacional quando gerado um .exe, porém deve-se existir programas que geram executaveis para windows, outros que geram para linux, outros pra Mec, etc…

Não há?

N

Cara,

Muito obrigado pelas boas vindas, mas eh o seguinte …

eu criei o manifest e disse a classe main, mas ele naum acha …

eu vou tentar rodar pelo console para ver c da certo …

Muito obrigado mais 1 vez …

Netto

G

Esse programa eu creio que não seja, pelo menos na descrição dele que eu encontrei na internet não fala nessa funcionalidade!!!

Se alguém tiver algum outro programa que gere um .exe que não necessite da JVM, posta aí!!

Obrigado!

R

Olá pessoal,

Mas e compilando através do GCJ ? Me parece que o GCJ compila arquivos java para código nativo dispensando o JRE.

Dessa forma poderia distribuir a aplicação sem se preocupar se os usuários terão a JRE instalada.

Até +

Rafael S.

W

“Ghost-in-the-shell”:
Olá, vocês estão falando do tamanho do .EXE … Existem programas que “comprimem” o executável diminuindo seu tamanho…

Não seria o caso áí para este .EXE feito em java…???

O que acham…???

Até…

Na real, o JAR acaba nao fazendo diferença… ele é só um zip com outro nome. Na hora de rodar a aplicação a jvm “olha” dentro dele (heheh, “olha” é brabo neh)…

W

“mavi”:
Um .exe é uma otima pedida a quem quer fazer algo facil e simpler para o end user e usando sua linguagem preferida.

Alem do fato que alguns compiladores tem o .exe mais rápido que o método normal (seja compilado, interpretado, mixed…)…

Eu não gosto de C# e prefiro muito mais usar um .exe do que fazer uma gambiarra horrenda pra rodar o negócio no sistema do usuário…

Agora, se o windows viesse como padrão pra considerar o .JAR como executável (e automaticamente rodar a JVM) aí seria outros 500…

Se é pra rodar em windows, um .exe ou um .jar não fazem diferença… um clique duplo executa de qqr jeito… :oops:

C

Muito bom a sua documentação…
Legal.

C

Legal a sua documentação…
Muito Bom

J

Segui os passos que eu vi aqui no forum para criar um JAR mas, quando executo ele ta dando esse erro:

’ Failed to load Main-Class manifest attibute from c:\teste2\testando.jar "

O codigo usado

package pacoteJar;

public class Principal {

public static void main(String[] args)

{

new dados();	

}

}

package pacoteJar;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

public class dados extends JFrame {

JLabel l1		= new JLabel(Nome:);

JLabel l2		= new JLabel(CPF:);

JLabel l3		= new JLabel(Endereço:);

JLabel l4		= new JLabel(Sexo <H OU M>:);

JLabel l5		= new JLabel(Idade:);

JTextField t1     	= new JTextField (20);	JTextField t2     	= new JTextField (20); 	JTextField t3     	= new JTextField (20); 	JTextField t4     	= new JTextField (20); 	JTextField t5     	= new JTextField (3);

JButton bMostrar	= new JButton(Mostrar);

JButton bSair		= new JButton(Sair);

JButton bAtualizar  = new JButton(Atualizar);

JButton bNomeR      = new JButton(Nome Reduzido);

JButton bValidaCPF  = new JButton(Valida CPF);

JButton bMensagem   = new JButton(Mensagem);
public dados() {
	Container c = getContentPane();
	setSize(450,520);               		c.setLayout(new BorderLayout()); 
	Container norte = new Container();
	norte.setLayout(new GridLayout(6,2)); 
	norte.add(l1);             
	norte.add(t1);   
	norte.add(l2);  
	norte.add(t2);  
	norte.add(l3);             
	norte.add(t3);   
	norte.add(l4);  
	norte.add(t4);
	norte.add(l5);  
	norte.add(t5);

	Container centro = new Container();
	centro.setLayout(new GridLayout(1,1));
	

	Container sul = new Container();
	sul.setLayout(new GridLayout(6,2));
	sul.add(bMostrar);
	sul.add(bAtualizar);
	sul.add(bNomeR);
	sul.add(bValidaCPF);
	sul.add(bMensagem);
	sul.add(bSair);
	
	c.add("North",norte);
	c.add("Center",centro);
	c.add("South",sul);
	show();
	bSair.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent evt){
					System.exit(0);
			}
			});
}

}

Criei a pasta c:\teste2
criei o arquivo manifest.mf e coloquei ==> Main-Class: pacoteJar.Principal
criei a pasta c:\teste2\pacoteJar e adicionei os arquivos dados.class e principal.class.

depois na pasta c:\teste2 digitei ==> jar cfvm testando.jar manifest.mf pacoteJar/*.class.

Ele criou o arquivo testando.jar, mas quando clico no arquivo ta dando o erro que eu mencionei acima.

’ Failed to load Main-Class manifest attibute from c:\teste2\testando.jar "

Alguem pode me ajudar? Eu peguei outro exemplo parecido com esse e deu tudo certo!

H

Seguinte criei um arquivo jar através do eclipse, e outro através do DOS, em ambos os casos tentei executá-lo em uma máquina que não possuia o J2SDK instalado e nos dois casos não rodou, alguém pode me ensinar uma forma eficiente de se fazer um, se é que é possível que ele rode da mesma forma que um executável, ou seja vc da dois cliques nele e ele rode sem necessitar de outros aplicativos instalados na máquina ou até mesmo uma forma de fazer a instalação dos programas necessários para rodar o JAR na máquina de uma pessoal que não tenha o J2SDK

[]'s
FHS

Obrigado

A

O que vc está fazendo, não rola em java. A alta compatibilidade de java deve-se à instalação prévia de uma jvm (java virtual machine). Geralmente, o ruindows já vem com uma jvm pobrezinha, q só quebra galho, portanto, não é impossível rodar um jar na máquina.
Há alguns compactadores, como o winrar q identificam o jar como um pacote de compressão, como se fosse um rar ou zip… configure seu compactador pra não acessar jar’s e seu so para executá-lo, de mais, é só sair pro abraço… :wink:

H

Quer dizer que sempre que eu entregar um programa para o meu uisuário eu vou ter que exigir que ele instale mais 51MB no computador para poder rodar meu programa???

Se for assim não vejo tanta vantagem assim na portabilidade do pois, se eu fizer um programa leve supondi que ocupe ae uns 10MB quando meu usuário for usá-lo ele vai ter que instalar tb a J2SDK???

Existe alguma máquina virtual que seja mais leve ocupe menos espaço em disco, gostaria de que se alguém puder por favor escreva algo para me dizer como faria na seguinte situação!!!

Eu crio meu programa vou criar seu instalador, quero fazê-lo instalar junto com ele a virtual machine para que usuário possa rodar meu software, quais programas uso e como eu poderia fazer isso da melhor forma possível???

J

Kra teu artigo ficou muito bom, vai me ajudar muito, valeu …

johnny

O

Pessoal sou novo neste fórum é uma das minha primeiras mensagens se não a primeira … mas vcs foram até a lua e voltaram neste tópico e não esclareceram (pelo menos não percebi) como se burla o esquema de utilizar uma ferramenta ou se existe uma que gere um .exe ou seja que execute direto sem a nescesidade de ter a JVM instalada …ou seja o próprio executavel teria ela … isso facilita muito para usuarios burros … que se lasque a portabilidade pois se tiver com fazer isso é muito mais facil gerar um executavel para linux e outro para win duas versões doque portar uma …pois deste modo eu barro o dito suporte ou até mesmo terque ir até o cliente instalar … fica muito mais facil …

enfim alguem conhece alguma meneira de fazer isso ???

V

Também sou novato no portal e achei um programa na NET que diz criar arquivos .exe a partir de arquivos java, ainda não testei mas vo disponibilidade ele pra vocês, pra quem quiser testar e um freeware chama Janex]|[Builder 1.0 e eu achei no baixaki.
Vina

A
Bom dia, preciso ler e escrever em um arquivo txt dentro do jar, como faço?  tentei de tudo, e tudo deu errado, não posso especificar o diretório, pois o jar rodará em diversas máquinas e diversos clientes,  tentei:

URL vURLJar = this.getClass().getResource(conf.txt);

mFile = new File(vURLJar.getFile());

mFileReader = new FileReader(mFile); // da erro aqui

/////////////////// ou //////////////////////////

mFile = new File(conf.txt);   // da erro aqui
O

O que a galera quer saber:

Existe um compilador para java, se chama GCJ, dos mesmos caras que criaram o melhor compilador de C/C++, mas ainda não funciona com AWT nem com SWING.

http://gcc.gnu.org/java/

E ponto final.

J

Olás. Tenho uma dúvida e uma solução.

Sou novo em Java (comecei em maio) e neste forum (primeiro post).

Seguinte, o código do jeito que está nesse tutorial do Felipe não funcionou aqui comigo. Tentei fazer o Principal.java e o criarFrame.java separados e compilar o criarFrame e depois o Principal (já que a classe criarFrame está como public), mas dá o seguinte erro:
C:\faz_jar\pacoteJar>javac Principal.java
Principal.java:7: cannot resolve symbol
symbol  : class criarFrame
location: class pacoteJar.Principal
                new criarFrame();
                    ^
1 error
obs.: o circunflexo deve aparecer sob o c do criarFrame().

Como faz para resolver esse problema deixando separado em dois arquivos (o código é exatamente aquele que o Felipe deixou no tutorial)?

----------------------------------------- Agora como eu fiz funcionar (em um único arquivo Principal.java):
package pacoteJar;
import javax.swing.*;

public class Principal
{
  public static void main(String[] args)
  {
    new criarFrame();
  }
}

class criarFrame extends JFrame
{
  public criarFrame()
  {
    super("Frame de exemplo");
    setBounds(120,120,250,250);
    show();
  }
}
obs.: a classe criarFrame deixa de ser public e as seguintes linhas vão para o início do arquivo: package pacoteJar; import javax.swing.*;

Arquivos usados:
c:\faz_jar\manifest.txt
c:\faz_jar\pacoteJar\Principal.java

J

Olá galera,

tava fazendo o .jar mas n hora de rodar o aplicativo apareceu a mensagem de erro abaixo:

Could not find the main class. Program will exit.

O meu arquivo manifest.txt tava da seguite forma:
Main-Class: C:\tutorial\pacoteJar\Teste.java
Name: C:\tutorial\pacoteJar\Teste.class
Java-Bean: True

poderiam me ajudar pessoal…
valeu…
T+[/i]

J

Usa desse jeito:

Main-Class: pacoteJar.Principal
Name: pacoteJar/Principal.class
Java-Bean: True

Se você mudou a classe para Teste usa assim:
Main-Class: pacoteJar.Teste
Name: pacoteJar/Teste.class
Java-Bean: True

P

teste

E

Galera quando tento executar um jar pelo prompt recebo a seguinte mensagem

Exception in thread “main” java.lang.NoClassDefFoundError: pacoteJar/Principal

Alguém sabe o porque disto?

Outra coisa --> Quando tento executar um jar pelo ícone, ele me abre o winzip. Isto está correto?

J

1º erro: compile a partir de um diretório antes (quando usa 2 arquivos tem que ser assim, se fizer num arquivo só como eu expliquei no meu outro post não precisa).

2º erro: windows explorer -> ferramentas -> opções de pasta -> escolhe a aba tipos de arquivos -> procura por “Executable Jar File” -> altere o open para:
“C:\Arquivos de programas\j2sdk1.4.1_02\bin\javaw.exe” -jar “%1” %*

OBS.: mude o endereço para se adequar ao seu sistema

J

Ah, antes dá uma olhada no winzip e desvincula a extensão.
Um xunxo no win98 p/ fazer isso é apertar o shift e clicar num arquivo .jar com o botão direito, aí no “Abrir com…” você procura o seu javaw. Depois só modifica como eu expliquei anteriormente.

Não esqueça de marcar o “sempre usar esse programa…” no “abrir com…”

O

Descobri uma maneira de criar executáveis! E o negócio realmente funciona.
E realmente não sei pq todos ficam fazendo segredo a respeito desse programa…

Para isso usa-se o programa [color=“red”]Excelcior JET.[/color]

Aproveitem.

M

“JavaDrops”:
1º erro: compile a partir de um diretório antes (quando usa 2 arquivos tem que ser assim, se fizer num arquivo só como eu expliquei no meu outro post não precisa).

2º erro: windows explorer -> ferramentas -> opções de pasta -> escolhe a aba tipos de arquivos -> procura por “Executable Jar File” -> altere o open para:
“C:\Arquivos de programas\j2sdk1.4.1_02\bin\javaw.exe” -jar “%1” %*

OBS.: mude o endereço para se adequar ao seu sistema

JavaDrops,
Não entendi muito bom a questão do 1o erro.
Estou com o mesmo problema, criei um .Jar via Eclipse, quando dou um duplo clique no arquivo ele nao faz nada, se vou via Prompt e uso o java -jar, ele me retorna o seguinte erro: Exception in thread “main” java.lang.NoClassDefFoundError: janelaprincipal
at Principal.main(Principal.java:18)

Acredito que estou fazendo tudo certo via Eclipse, pois preencho todos os campos solicitados e o próprio eclipse gera meu Manifest. O que pode ser isso?? Agradeço a ajuda!

J

Então, no meu caso (usando o package pacoteJar) estava dando esse erro:
Exception in thread “main” java.lang.NoClassDefFoundError: pacoteJar/Principal

Isso pq eu estava compilando dentro do diretório
c:\faz_jar\pacoteJar
com o comando
javac Principal.java

Mas o certo era compilar dentro do diretório
c:\faz_jar
com o comando
javac pacoteJar\Principal.java

Mas isso na linha de comando, não sei como funciona com o Eclipse.

W

:twisted:
Esse tutorial ficou legal…
É esse tipo de contribuição que transforma o PJ na maior comunidade Java do Brasil…
WS

P

como criar o .jar pelo NetBeans 3.6??? Alguem pode passar um passo-a-passo ? :cry:

F

galera no meu roda bonitinho, criei o jar redondinho, o executável tbm roda que é uma beleza só que em outros computadores não roda de jeito nenhum…
eu passo o .jar ou o .exe mas nda…
dá sempre o mesmo erro nos outros computadores, could not find main class… ou coisa assim…
oq eu tô fazendo de errado?? tem q mandar a classe junto ou o alguma outra coisa???
:sad: :sad: :sad:

B

“Felipepontojava”:
galera no meu roda bonitinho, criei o jar redondinho, o executável tbm roda que é uma beleza só que em outros computadores não roda de jeito nenhum…
eu passo o .jar ou o .exe mas nda…
dá sempre o mesmo erro nos outros computadores, could not find main class… ou coisa assim…
oq eu tô fazendo de errado?? tem q mandar a classe junto ou o alguma outra coisa???
:sad: :sad: :sad:

Felipe, essa outra máquina tem que ter o JVM.

J

Além disso a extensão .jar tem que estar adequadamente associada ao Java.

Para Win98 e usando j2sdk1.4.2_08:

  • abra Windows Explorer
  • vá no menu Ferramentas
  • escolha Opções de pasta…
  • na aba Tipos de Arquivo procure por “Arquivo .JAR” ou “Executable Jar File” (explicarei ao final o que fazer se não estiver como um desses)
  • edite o tipo e em “Open” (se não tiver: crie) coloque (com as aspas):
    “C:\j2sdk1.4.2_08\bin\javaw.exe” -jar “%1” %*
    ou
    “C:\j2sdk1.4.2_08\bin\java.exe” -jar “%1” %*
    (a diferença é que no segundo além da janela da sua aplicação fica aberta uma janela DOS)

Observações:

  • verifique se o caminho está correto
  • o “%*” ao final é como o Java associa a extensão quando é instalado, mas funciona sem
  • as aspas envolvendo o %1 são importantes para o caso de pastas com espaço no nome

O que fazer se o .JAR não estiver associado a um dos nomes que eu indiquei:

  • localize um arquivo .JAR no windows explorer
  • pressione a tecla Shift (mantenha pressionada) e clique com o botão direito sobre o arquivo
  • aparecerá a opção “Abrir com…”, clique nela (pode soltar o Shift)
  • marque a caixa “Usar sempre…” e clique no botão “Outros”
  • procure seu javaw.exe (ou java.exe)
  • clique em OK
  • isso não associa direito a extensão (falta o -jar), você vai ter que entrar nas “Opções de Pasta” e arrumar conforme eu escrevi no começo
F

Valeu JavaDrops tua explicação vai ficar guardada, eu sabia que tinha que ser configurado para o windows reconhecer o .jar mas ainda não sabia como, já tinha olhado em alguns lugares mas ainda não tinha encontrado como fazer… :grin:
agora já me liguei como faz!!.. valeu…
cara soh tem um probleminha… eu estou passando minha aplicação para end users que não conseguem fazer essa configuração… e eu nem tenho como fazer essa configuração no pc deles remotamente…
eles tem a JVM(ou JRE) pois eu testei fazendo eles entrarem em alguma páginas que utilizam o java para carregam corretamente…
soh q como o .jar sem prévia configuração não eh possível a execução da aplicação então eu criei um .exe… porém nem com esse .exe eles entraram!!! como eh possível isso… eu criei um .exe que ficou bem, leve, com o JSmooth… ele aumenta um pouco mais que o .jar apenas, não chega a incluir a jvm dentro do .exe mas mesmo assim, eu entro e eles não entram… galera eu estou perdido…
se alguém souber oq está acontecendo…
e tiver como me dar uma mão… valeu!!! :grin:

J

Não entraram como? Não executa? Dá mensagem de erro?
Sei que com applet pode dar problema dependendo da versão do plugin que a pessoa tem instalado ou da JVM e que é bom compilar com:
javac classe.java -target 1.1

Mas não sei se isso vale para aplicativos também.

F

para end users eu fiz um executável, pra não ter q configurar o .JAR soh q quando clicam lá eme diz: could not find main class…
e no meu computador executa certinho… pq será isso???
me falaram pra mandar o arquivo com um .bat, soh q eu gostaría de poder mandar apenas um arquivo…
:sad:
tem q ser possível, qual a melhor maneira de entregar um projeto a um cliente por exemplo, vc não passaría apenas um arquivo para ele executar???

J

Tem que ver se o CLASSPATH está certo e se a JRE deles é compatível com a versão na qual você compilou.

F

ixi… a versão do meu jre na hora que eu criei o exe tem q ser a mesma ou compatível com a da pessoa q vai executar???..
ixii… 8O

em java ou outra linguagem tem como ver se a pessoa tem o jre e se não tiver redirecionar ela para o local do download???

B

Vc terá que fazer um programa de verificação em uma linguagem diferente de Java…
Posi vc concorda que para vc executar essa verificação em Java vc terá que ter a JRE. Então de qualquer forma o usuário terá que ter o JRE.

J

“Felipepontojava”:
ixi… a versão do meu jre na hora que eu criei o exe tem q ser a mesma ou compatível com a da pessoa q vai executar???..
ixii… 8O

Se para rodar o .exe você precisar da JRE na máquina então sim, precisa ser compatível.
Imagine a situação, você faz a sua aplicação com o J2SE 5.0, usando os novos recursos, aí o seu usuário tem a J2SE 1.4.2 ou uma JRE qualquer que não reconhece os novos recursos. Aí não vai funcionar, ou vai funcionar só uma parte.
Isso faz parte da famosa “configuração mínima exigida”.
Ninguém roda um Win2k em um XT neh?
Outra hipótese é você adequar seu sistema ao usuário utilizando apenas os recursos básicos da linguagem (e compila com o -target), mas aí você vai ficar bastante restrito.

Acho que o melhor seria você definir os requisitos mínimos mesmo e “obrigar” seu usuário a instalar uma JRE que você sabe que funciona com seu sistema. Caso ele encha muito fale sobre as características do Java (robustez, segurança, …) e que uma JRE atualizada corrige vários problemas que poderiam surgir (só não diga problema de segurança, neh?) e que permite que você use novos recursos que incrementam as qualidades que você já citou.

F

valeu galera…
vou dar um jeito de fazer a pessoa instalar o jre…
:grin:

G

mas deixa eu perguntar…

se eu criar esse arquivo .jar e mandar pra alguem na internet. e ela nao tiver nada instalado la… vai rodar na casa dela???

No caso se eu criar um .exe roda certo?

O

Pra rodar .jars é preciso SIM do JRE instalado e configurado.
No caso do executável(exe) assumo que estejam tentando criá-lo com o JET, com o JET tem um inconveniente, que realmente é um incoveniente que vc precisa ter instalado as DLLs na máquina que vc vai rodar o executável, isso é realmente muito chato, tipo a sua aplicação tem 100KB e as DLLs tem no total uns 60~80MB… e ainda por cima tem de ser da versão do JRE que vc compilou…

E

Ola galera do PJ!
Sou novato em Java, e como muitos aqui usava Delphi, no Delphi por exemplo havia como a gente usar uma aplicação “EMBARCADA”, ou seja, junto com nossa aplicação ia alguma .dll do banco de dados que nossa aplicação utilizava.
Bem, daí minha dúvida!

Não existe uma instalação mínima do JVm, algo extremamente simples?

Voces ja viram o JVM da Microsoft? Ele tem uns 7Mb.

Não seria possível instalar junto com nossa aplicação o JVM necessário para o funcionamento da mesma?

Para quem vai atender o usuário final quem sabe nao seria melhor criar um instalador para Windows e outro para Linux?

No site da Receita Federal (receita.fazenda.gov.br) voces poderam encontrar o IRPJ2006 em Java com vários instaladores, um para cada sistema operacional. Se voces tentarem instalar a versão para Windows sem ter a maquina java instalada o instalador simplesmente não continua.

Então estão ai algumas dúvidas, e informações que podem ser de utilidade à comunidade!

Flw.

Cledson

G

Tem como criar um .jar, sem que nenhuma classe tenha o metodo main???

Gostaria de criar um .jar com as minhas classes de basicas, para conexao e consulta em banco (funçoes sql), … para eu apenas import o jar para outras aplicações???

P

Porque quando tento gerar o meu executavel nao acontece nada? ja tentei com o Netbeans e com esse tutorial e nao da… na mao quando tento compila da erro tambem e dentro do meu package nao tem nenhum Main.class so Main.java… ??

P

Andei lendo esse topico e vi que o Frank tinha a mesma duvida que tenho, ta dando erro na minha conexao com o banco de dados no meu arquivo .jar, no netbeans nao da erro, o q tenho q fazer?

o erro e o seguinte:

Driverjava.lang.ClassNotFoundException : org.gjt.mm.mysql.Driver
SQLException: No Suitable Driver

o que devo fazer?

M
Quando crio o arquivo Jar ele aparentemente não dá erro, mas também não funciona, ele apenas chama a tela principal e não chama o cadastro solicitado. Quando executo pelo modo Dos, dá o seguinte erro:
C:\>java -jar sstintas.jar
java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at br.com.sstintas.modelo.bd.GerenciadorBD.getConexao(GerenciadorBD.java:18)
        at br.com.sstintas.modelo.bd.GerenciadorBDCidade.listar(GerenciadorBDCidade.java:103)
        at br.com.sstintas.view.ClienteJuridicoView.getCbCidade(ClienteJuridicoView.java:875)
        at br.com.sstintas.view.ClienteJuridicoView.getPanelPrincipal(ClienteJuridicoView.java:528)
        at br.com.sstintas.view.ClienteJuridicoView.getJTabbedPane(ClienteJuridicoView.java:404)
        at br.com.sstintas.view.ClienteJuridicoView.getJContentPane(ClienteJuridicoView.java:2307)
        at br.com.sstintas.view.ClienteJuridicoView.initialize(ClienteJuridicoView.java:2293)
        at br.com.sstintas.view.ClienteJuridicoView.<init>(ClienteJuridicoView.java:375)
        at br.com.sstintas.view.Principal$1.actionPerformed(Principal.java:116)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at br.com.sstintas.modelo.bd.GerenciadorBDCidade.listar(GerenciadorBDCidade.java:103)
        at br.com.sstintas.view.ClienteJuridicoView.getCbCidade(ClienteJuridicoView.java:875)
        at br.com.sstintas.view.ClienteJuridicoView.getPanelPrincipal(ClienteJuridicoView.java:528)
        at br.com.sstintas.view.ClienteJuridicoView.getJTabbedPane(ClienteJuridicoView.java:404)
        at br.com.sstintas.view.ClienteJuridicoView.getJContentPane(ClienteJuridicoView.java:2307)
        at br.com.sstintas.view.ClienteJuridicoView.initialize(ClienteJuridicoView.java:2293)
        at br.com.sstintas.view.ClienteJuridicoView.<init>(ClienteJuridicoView.java:375)
        at br.com.sstintas.view.Principal$1.actionPerformed(Principal.java:116)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

Já tentei mudar de lugar as pastas os arquivos do postgresql, mas não deu certo.
Alguma sugestão do que fazer??? :cry:

Obrigada

K

Cara, estou com o mesmo problema que voce…
Só que uso classes do activation.jar e mail.jar, então da erros parecidos com o seu.

Alguem poderia nos ajudar ae???

M

Olá Kleydson!
Consegui resolver, veja o tópico abaixo:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=29939

e o link:
http://cristian.totalsecurity.com.br/index.php?option=com_content&task=view&id=45&Itemid=39

Qualquer dúvida post aí!

T+

K

Ae cara, deu certo… era esse bendito class-path que estava faltando no manifest.

Obrigado ae!!!

C

eu não estou conseguindo executar meus *.jar dando 2 cliques … soh pelo promt … consigo abrir ele … me ajudem por favor …

J

amigos, segui todo o procedimento do tutorial que por sinal usa uma excelente didatica mas ta dando um erro no propont de commando assim que diz que jar não é um comando interno nem externo um programa operavel ou um arquivo em lotes.
configurei meu classpath assim:

nome da variavel - CLASSHPATH
valor da variavel - C:\Arquivos de programas\Java\jdk1.5.0_08\bin

outra assim:

nome da variavel - JAVA_HOME
valor da variavel - C:\Arquivos de programas\Java\jdk1.5.0_08\

Enfim, quem poder me ajudar ficarei bastante grato.
desde já muito obrigado.

L

Desculpa minha ignorância mas eu tenho a seguinte duvida, segui passo à passo o tutorial e correu tudo bem , ai foi criado um arquivo .rar q é o descompactador q eu uso, é isso msm q acontece ? Pq no tutorial diz q para executa-lo basta eu dar 2 cliques no ícone e não é isso que acontece aqui.Dou 2 cliques no ícone e ele abre o descompactador.

V

Quando digito a linha " jar cfm teste.jar manifest.txt pacoteJar*.* " - java.io.FileNotFoundException

Erro que descreve que não foi encontrado o “manifest.txt”.
Os arquivos estão estruturados assim:

Dentro do diretório ‘C:\Programa’
está o pacote: pacoteJar
e o arquivo: manifest.txt

A execuçao da linha de comando foi no seguinte diretório:

C:\Programa>jar cfm NOME_DO_ARQUIVO.jar manifest.txt pacoteJar*.*

Se puder alguem de uma ajuda ae, tanto pra esse problema quanto pra quando aparece o erro: “No Main class found”

Valeu, um abraço a todos

F

eu exportei para jar no eclipse, a interface rodou certinho,
mas quando pesso para fazer a consulta está dando o seguinte erro:
erro: com.mysql.jdbc.driver
alguem pode me ajudar?

F

consegui resolver, apenas coloquei o arquivo mysql-connector-java-3.1.12-bin.jar
dentro da pasta:
…\Java\jre1.5.0_08\lib\ext

no linux tem q colocar o conector dentro da
…\Java\jdk1.5.0_08\jre\lib\ext

C

Olá Felipe, vc pode me explicar como criar um arquivo .jar no netbeans para um projeto web.

C

Só uma correção…
Os arquivos gerados para a web, sao arquivos .WAR
Web ARchive…

Clique com o botão direito no seu projeto, e vai em export… lá vai ter alguma coisa parecida. OK ?

S

vlew

A

E ai, beleza? Olha, eu vi um video no youtube falando sobre isso, o link é


Espero tê-lo ajudado.
André

_

tp tenho um chat
e para cliente e servidor tem q passar parametros de porta e ip

mesmo assim da para fazer?

C

Receba os parametros pelo args[] do metodo main!

N

“andre1704d”:
E ai, beleza? Olha, eu vi um video no youtube falando sobre isso, o link é

Espero tê-lo ajudado.
André

Bom vídeo! :wink:

Para aqueles que desejarem criar tutoriais em vídeo recomendo o programa:
CamStudio (Freeware) - http://www.camstudio.org/

L

Ter que instalar JSDK na máqui do usuário ? :-/ Axo que seria melhor criar um arquivo de lote (.bat) com a linha de comando

java NOME_DO_PROGRAMA

Arquivos de lote podem ser execultados com um duplo click e vc ainda pode criar um atalho pra ele na area de trabalho e também mudar o icone.

No caso do linux tambem temos essa opção mas não é mais arquivo .bat e sim um pequeno script

Particularmente não vejo vantagens no .jar ao contrario só a desvantagem de ter que instalar jsdk todo na maquina do usuário.

B

Estou começando agora em Java e achei interessante o tutorial, nao enrola e vai direto ao ponto. Obrigado!!!

Abraços

L

é galera faz dois dias que eu tento gerar esse .jar mas não consigo
Estou começando a usar o java e não estou conseguindo evoluir…
enrrosquei na seguinte sintuação…

esse prog. é só para aprende como gerar um jar.

  1. escrevi o seguinte programa…
package pacoteJar;

import javax.swing.*;

public class janela extends JFrame{

public janela(){

super(janela);

setSize(500,250);

setVisible(true);}

public static void main (String args[])

{

janela app = new janela();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

  1. minha estrutura é essa:

C:\Arquivos de programas\Java\jdk1.5.0_06\bin

criei o janela.java e se encontra: C:\hoje\janela.java

depois compilado ficou assim: C:\hoje\pacoteJar\janela.class

  1. Para criar o arquivo .jar criei um arquivo manifest.txt que esta desta forma:

Main-Class: pacoteJar.janela
Name: pacoteJar/janela.class
Java-Bean: True

Ele se encontra: C:\hoje\manifest.txt

  1. então entrei na pasta onde estava o jar…
    C:\Arquivos de programas\Java\jdk1.5.0_06\bin>

E dei o comando…
C:\Arquivos de programas\Java\jdk1.5.0_06\bin>jar cfm janela.jar C:\hoje\manifest.txt C:\hoje\pacoteJar..

  1. com esse comando gera o arquivo janela.jar …
    mas quando eu tento abri-lo da um erro assim

Could not find the main class. Program will exit

O que estou fazendo errado???

L

É galera faz dois dias que eu estou tentando gerar esse .jar mas não da certo.
Estou começando a usar o java e não estou conseguindo evoluir…
enrrosquei na seguinte sintuação…

esse prog. é só para aprende como gerar um jar.

  1. escrevi o seguinte programa…
package pacoteJar;

import javax.swing.*;

public class janela extends JFrame{

public janela(){

super(janela);

setSize(500,250);

setVisible(true);}

public static void main (String args[])

{

janela app = new janela();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

  1. minha estrutura é essa:

C:\Arquivos de programas\Java\jdk1.5.0_06\bin

criei o janela.java e se encontra: C:\hoje\janela.java

depois compilado ficou assim: C:\hoje\pacoteJar\janela.class

  1. Para criar o arquivo .jar criei um arquivo manifest.txt que esta desta forma:

Main-Class: pacoteJar.janela
Name: pacoteJar/janela.class
Java-Bean: True

Ele se encontra: C:\hoje\manifest.txt

  1. então entrei na pasta onde estava o jar…
    C:\Arquivos de programas\Java\jdk1.5.0_06\bin>

E dei o comando…
C:\Arquivos de programas\Java\jdk1.5.0_06\bin>jar cfm janela.jar C:\hoje\manifest.txt C:\hoje\pacoteJar..

  1. com esse comando gera o arquivo janela.jar …
    mas quando eu tento abri-lo da um erro assim

Could not find the main class. Program will exit

O que estou fazendo errado???

R

Não consegui visualizar o Tutorial para gerar o .jar

Onde encontro um tutorial para gerar o .jar ???

Obrigado.

Y

Boa Tarde, eu estou comecando agora a me atualizar com a programacao de java e preciso de muita ajuda em relacao, ao inicio.Qual programa que devo utilizar para comecar a compilar as mensagens para comecar a programacao?
Ja comecei a ler o apostilando, do site apostilando.com e comecei e terminei.Eu irei agradecer bastante a quem me ajudar, muito obrigado…

:lol:

Criado 28 de agosto de 2004
Ultima resposta 7 de nov. de 2009
Respostas 92
Participantes 58