Fala galera!!
Estou com um problema ao executar um .jar com duplo clique.
Se eu executar através do prompt ou pelo NetBeans, ele executa perfeitamente. Agora quando dou clique duplo, ele não abre, mais entrando no gerenciador de tarefas, ele cria um processo que fica executando, tanto que, se eu mandar excluir o .jar eu recebo a msg informando que ele esta em uso, depois de matar o processo eu consigo excluir ele.
As variáveis de ambiente estão corretas.
O arquivo manisfest esta blz tb.
Esse problema começou a rolar depois que eu troquei o banco. Eu estava utilizando o Firebird 2.5.2, agora estou utilizando a versão embarcada do firebird 2.5.2. Tanto que, eu experimentei trocar a URL do banco e sair fora da versão embarcada e tudo voltou a funcionar. Será q tenho q configurar alguma variável de ambiente para o banco embarcado?
–> Esse problema esta ocorrendo no Seven, no windows XP funcionou PERFEITAMENTE! 
qual a versão do jre no xp e no win7 ?
att,
Eu não gosto de criar programas que você possa abrir com um duplo clique. É que dessa forma você não consegue setar corretamente os parâmetros adequados para a JVM, como tamanho máximo de memória e opções da JVM. Eu não consideraria isso um problema: o correto é abrir um programa via shortcut, que passe os parãmetros adequados para o javaw.exe.
Ambos estão a versão 7 do JRE
A unica diferença é que no windows XP estou utilizando a versão x86 do banco, e no seven a versão x64. Experimentei utilizar a versão x86 no seven, só que ele chiou, falando que não era possível carregar uma dll x86 em uma maquina x64.
Outro detalhe é que na versão 2.2.1 x86 utiliza o jaybird22.dll
Enquanto a versão 2.2.1 x64 utiliza o Jaybird21.dll (Estranho ñ?)
Será algum bug?!?!
Você pode instalar as 2 JVMs em uma mesma máquina Windows de 64 bits.
Entretanto, como você está usando código nativo, você precisa especificar exatamente qual das duas JVMs você tem de usar, já que não se pode carregar código nativo de 32 bits em uma JVM de 64 bits, e vice-versa. (Isso é limitação do processador, nem do Windows é, portanto não dá para fazer um quebra-galho).
Suponha que você queira fazer com que a JVM padrão seja a de 32 bits (porque seu código nativo é de 32 bits). Então você instala primeiro a de 64 bits, e depois a de 32 bits. Assim, o javaw.exe que vai ficar instalado em c:\windows\system32 é a de 32 bits.
Suponha que você queira fazer com que a JVM padrão seja a de 64 bits (porque seu código nativo é de 64 bits). Então você instala primeiro a de 32 bits, e depois a de 64 bits. Assim, o javaw.exe que vai ficar instalado em c:\windows\system32 é a de 64 bits.
Como acho que isso é uma solução porca e idiota, eu prefiro especificar manualmente no shortcut para chamar seu programa Java qual é a JVM que você vai usar. Uma delas provavelmente fica em “c:\program files (x86)\java\jre7\bin\javaw.exe” e a outra em “c:\program files\java\jre7\bin\javaw.exe”.
Então, estou desenvolvendo no seven e minha JDK é x64, estranhamente o software esta rodando na x86 e não roda na x64. Agora na JRE eu tenha as duas versões. Vou fazer alguns testes aqui e postar os resultados.
Dando duplo clique é iniciado um processo javaw.exe*32. O processo é iniciado, mais num abre nada.
Executando pela linha de comando java -jar “…” é iniciado um processo java.exe e ai tudo funciona perfeitamente.
Executando pela linha de comando javaw -jar “…” tb é iniciado um processo javaw.exe e tudo funciona corretamente.
No caso esse java.exe/javaw.exe seria a versão x64, correto? como faço para o software iniciar a partir dela com o duplo clique?
Eu preciso explicar como é que o Windows funciona.
Quando você dá um duplo-clique em qualquer arquivo (por exemplo, um arquivo .docx, .pdf, etc.) o Windows Explorer vai até o Registry, e então ele faz duas coisas:
- Acha a associação da extensão do arquivo com o tipo do arquivo. Por exemplo, no caso de arquivos .jar, o instalador do JDK ou da JRE fez a seguinte associação:
.jar --> jarfile
- A seguir, pega o tipo do arquivo e procura qual é o comando associado a ele. No caso da minha máquina, a associação é com o executável javaw.exe que está em C:\Program Files\Java\jre7\bin. No caso da sua não tenho a menor idéia. Então, ele chama esse comando.
Abra uma linha de comando e digite os seguintes comandos (obviamente, na sua máquina pode dar um resultado diferente) :
C:\>assoc .jar
.jar=jarfile
C:\>ftype jarfile
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
O comando “ftype jarfile” vai lhe dizer qual é a JRE que está sendo usada para executar os comandos com um duplo clique.
Digite “ftype /?” em uma linha de comando, leia o help que ele vai mostrar, e veja como você pode mudar a associação para chamar a JRE adequada.
A associação esta com c:\Program Files(x86)\Java\jre7\bin\javaw.exe
Para mudar o comando eu coloquei no prompt
FTYPE jarfile=“C:\Program Files\Java\jre7\bin\javaw.exe” -jar “%1” %*
Ele me retorna: Acesso negado. Erro ao processar: jarfile.
No caso do Windows Vista e 7, você só consegue mudar a associação se abrir um Command Prompt como Administrator (você precisa clicar com o botão direito no shortcut do Prompt de Comando e escolher a opção “Rodar como Administrador” ou “Executar como Administrador” (não sei como é a frase exata).
Senão você vai ter esse erro de “acesso negado”.
Resolvi acessando direto no registro (regedit)
A chave esta em
HKEY_CLASSES_ROOT\jarfile\shell\open\command
ai alterei o caminho.
Agora eu indo no prompt e digitando FTYPE jarfile
ele me retorna o mesmo valor retornado pra vc no post logo acima. Problema Resolvido.
VLW!!!
De qualquer modo, tenho de ressaltar que o correto é sempre criar um shortcut para a versão adequada do Java que rode sua aplicação, com os parâmetros adequados.
Rodar as coisas com um duplo clique só funciona bem para aplicações que usem pouca memória, não precisem de nenhum parâmetro, não usem bibliotecas externas (ou seja, não dependam de o CLASSPATH estar setado corretamente), não precisem de nenhuma configuração especial da JVM e não dependam de nenhum recurso especial (no caso do Sartori, de código nativo).