Inicializar aplicação com uma linha só

1 resposta
D

Olá:

Entre aqui para fazer esta perguta e logo vi a mensagem “Inicializar de maneira mais fácil”: fiquei com esperança, mas por ali não tive solução. :slight_smile:

Gostaria de saber se alguém pode me ajudar a inicializar meu aplicativo com uma única linha de comando, substituindo o .bat que uso. O problema de usar um .bat é que ele deixa uma tela preta aberta que o usuário tem que fechar, incomodando-o.

Eu queria rodar apenas

javaw -classpath myapp.jar;systray4j.jar;log4j-1.2.11.jar;etc.jar pacote.e.minha.classe.main parametro1 parametro2

Se eu criar um atalho no Windows apontando para este comando javaw etc ou se eu criar um item no menu Iniciar/MyAPP para disparar a aplicação, não tem problema, esta única linha javaw etc funciona.

O problema é que o aplicativo deve iniciar quando o usuário se loga e isto só funciona se eu colocar usar um .bat para colocar um cd para o home da minha aplicação:

cd %MYAPP_HOME%
javaw -classpath myapp.jar;systray4j.jar;log4j-1.2.11.jar;etc…jar pacote.e.minha.classe.main parametro1 parametro2

Se eu não puser este “cd”, sou avisada de que ele não achou a MainClass.

Já tentei:

  • colocar o subdiretório completo antes de cada jar (javaw -classpath C:\Program Files\MyApp\myapp.jar,C:\Program Files\MyApp\systray4.jar etc);
  • setar o classpath como variável de ambiente para todos os usuários
  • criar um outro programa que chame este

e não obtive sucesso.

Outras informações:

  • para iniciar meu programa no login, criei no regedit uma chamada para o meu .bat em Software\Microsoft\Windows\CurrentVersion\Run\

  • meu manifest tem uma linha indicando qual a MainClass

  • no meu subdiretório tenho ainda um systray.dll, um arquivo user.txt que a aplicação cria e depois lê e um myapp.log criado pelo log4j. A referência a estes arquivos no programa é feita sem diretório, i.e., a aplicação assume que o arquivo é gravado e lido do diretório corrente.

Tudo isto funciona com a tal da única linha, sem classpath e sem cd my_app, desde que o “javaw etc” não seja chamado na hora do login, via entrada que fiz no regedit.

Qualquer idéia será muito bem-vinda!

Denise

1 Resposta

D

Olá,

Consegui a resposta no tópico “Inicializar de maneira mais fácil”.
O eduardohitek mostrou que, para fechar um bat, usa-se o comando start antes do java.

Então meu bat ficou

cd %MYAPP_HOME%
start javaw -classpath myapp.jar;systray4j.jar;log4j-1.2.11.jar;etc…jar pacote.e.minha.classe.main parametro1 parametro2

Ele inicia no login do usuário corretamente, com o cd%MYAPP_HOME% que ele insiste em ter e, ao mesmo tempo, fecha a janela para não incomodar o usuário.

Denise

Criado 22 de agosto de 2007
Ultima resposta 22 de ago. de 2007
Respostas 1
Participantes 1