Executar minha aplicação a partir de um arquivo

8 respostas
J

Olá galera,

Fiz uma aplicação web e preciso também que essa aplicação seja iniciada por algum arquivo (como um arquivo .BAT que chama minha classe de entrada MAIN).

1ª dúvida: Como eu incluo libraries no comando Java quando chamo minha aplicação a partir do DOS? Pois preciso adicionar as libraries do projeto nessa linha de comando…

2ª dúvida: Tem uma maneira melhor de fazer isso sem gerar um arquivo .BAT que executa a partir do DOS?

Valew!!!

8 Respostas

T
  1. Use o parâmetro -classpath

Exemplo:

c:\jdk1.6.0\bin\java -classpath abc.jar;def.jar;ghi.jar meu.pacote.MinhaClasse meus parametros

  1. Você pode especificar os tais jars no MANIFEST.MF, mas eu em minha humilde opinião prefiro o BAT mesmo, porque posso passar outros parâmetros (como -Xmx, que indica a quantidade máxima de memória a ser usada) que não posso passar no MANIFEST.MF.
zap

Se isso funcionar por favor avise aqui … estou com um problema parecido, e nao consegui fazer funcionar ainda.

J

Funcionou, mas eu fiz de outra forma.

Como o arquivo que quero executar é um arquivo .BAT, dentro dele eu setei todas as libraries que eu to usando no meu projeto para o CLASSPATH, assim eu pude executar minha classe:

SET CLASSPATH=.;%CLASSPATH%;%LIBS%\ant-1.6.3.jar;%LIBS%\ant-antlr-1.6.3.jar;%LIBS%\ant-junit-1.6.3.jar;%LIBS%\ant-launcher-1.6.3.jar;%LIBS%\antlr-2.7.5H3.jar;%LIBS%\antlr.jar;%LIBS%\ant-swing-1.6.3.jar;%LIBS%\asm.jar;%LIBS%\asm-attrs.jar;%LIBS%\axis.jar;%LIBS%\c3p0-0.8.5.2.jar;%LIBS%\c3p0-0.9.1.1.jar;%LIBS%\cglib-2.1.jar;%LIBS%\cleanimports.jar;%LIBS%\commons-beanutils.jar;%LIBS%\commons-collections-2.1.1.jar;%LIBS%\commons-collections.jar;%LIBS%\commons-digester.jar;%LIBS%\commons-discovery-0.2.jar;%LIBS%\commons-fileupload.jar;%LIBS%\commons-lang.jar;%LIBS%\commons-logging-1.0.4.jar;%LIBS%\commons-logging.jar;%LIBS%\commons-pool.jar;%LIBS%\commons-validator.jar;%LIBS%\concurrent-1.3.2.jar;%LIBS%\connector.jar;%LIBS%\dom4j-1.6.1.jar;%LIBS%\ehcache-1.1.jar;%LIBS%\ehcache-1.2.4.jar;%LIBS%\hibernate3.jar;%LIBS%\jaas.jar;%LIBS%\jacc-1_0-fr.jar;%LIBS%\jakarta-oro.jar;%LIBS%\jaxen-1.1-beta-4.jar;%LIBS%\jaxrpc.jar;%LIBS%\jboss-cache.jar;%LIBS%\jboss-common.jar;%LIBS%\jboss-jmx.jar;%LIBS%\jboss-system.jar;%LIBS%\jdbc2_0-stdext.jar;%LIBS%\jgroups-2.2.7.jar;%LIBS%\jgroups-2.2.8.jar;%LIBS%\jta.jar;%LIBS%\jta-spec1_0_1.jar;%LIBS%\junit-3.8.1.jar;%LIBS%\log4j-1.2.14.jar;%LIBS%\ojdbc14.jar;%LIBS%\oscache-2.1.jar;%LIBS%\proxool-0.8.3.jar;%LIBS%\saaj.jar;%LIBS%\standard.jar;%LIBS%\struts.jar;%LIBS%\struts-legacy.jar;%LIBS%\swarmcache-1.0rc2.jar;%LIBS%\versioncheck.jar;%LIBS%\wsdl4j-1.5.1.jar;%LIBS%\xapool.jar;%LIBS%\xerces-2.6.2.jar;%LIBS%\xml-apis.jar;

Acredito que usar um arquivo .BAT não é o melhor approach, mas pra mim soluciona por enquanto.

Valew!!!

T

Vou dar uma dica - como você deve saber, batchs alteram o ambiente em que rodam, a menos que você a inicie com “SETLOCAL” e a encerre com “ENDLOCAL”. É que se você rodar repetidas vezes essa sua batch, o valor da variável CLASSPATH vai cada vez ficar mais comprido, até que alguma coisa estoure. Usando SETLOCAL e ENDLOCAL as modificações nas variáveis de ambiente são desprezadas depois da execução da batch.

zap

Legal que funcionou com o .bat

Ja estou comecando a achar que o java -classpath nao funciona …

J

Ahh legal Thingol… boa dica a sua não tinha pensado nisso… eu reparei que a variável de ambiente suporta no máximo 1024 caracteres, ou seja, a pasta onde as libs ficam não pode ter um caminho extenso senão você não consegue adicionar todas as libs no classpath.

Valew a todos!

zwingli

Não rola colocar a aplicação em um JAR e tornar ele auto-executável pelo seu manifest ?

Vejam essa matéria aqui do guj mesmo: http://www.guj.com.br/java.arquivos.jar.artigo.42.1.guj

J

Então… acho que não rola hein… pq ele tem q ser uma aplicação WEB e também precisa ter um acesso via arquivo porque será chamado a partir de uma aplicação de EDI, que quando terminar a cópia de um arquivo chamará minha aplicação para iniciar alguns processos…

Criado 23 de abril de 2008
Ultima resposta 24 de abr. de 2008
Respostas 8
Participantes 4