Fiz um aplicativo gráfico e gerei um .jar. Executei-o no terminal do linux e funcionou tranquilo com o comando java -jar MigracaoAluno.jar.
Esse aplicativo deve ser executado automático, por isso fiz um script e adicionei no crontab, mas quando chega na hora determinada ele não executa nda. Já pesquisei e vi q o problema pode ser no classpath, mas não encontrei ao certo o q devo fazer para q meu aplicativo funcione.
Alguém pode me ajudar nisso??? Desde já agradeço a atenção e colaboração.
O crontab executa as tarefas com outro usuário e em outro diretório; portanto ele pode não ter achado o executável java (porque o PATH é diferente) ou o arquivo MigracaoAluno.jar.
Crie um shell script, dê a permissão de execução adequada (chmod +x), e explicite os diretórios. Algo como:
#!/bin/bash
PATH=/usr/local/java/bin:$PATH
cd /home/usuario
java -jar MigracaoAluno.jar
Aí você cadastra o script, não o comando “java -jar”. OK?
EDIT - sempre esqueço que para separar diretórios no PATH é “:”, não “;” como no Windows.
meu script tá assim:
#!/bin/bash
export PATH=/usr/lib/jvm/java-6-sun/bin:$PATH
cd /home/admserver/Desktop/MigracaoAluno
java -jar MigracaoAluno.jar
O Cron chega a carregar o a linha de comando na hora determinada:
Feb 14 11:45:01 server-sistemas /USR/SBIN/CRON[22296]: (root) CMD (sh /home/admserver/Desktop/MigracaoAluno/MigracaoAluno.sh)
Porém, nda acontece. Pode ser a inteface gráfica do aplicativo q não roda pelo cron? Ou meu script tem algum erro?
Deixa ver se eu entendi: esta aplicação sua que vai rodar no crontab é em Swing e/ou AWT?
Outra coisa: você falou no post original que podia ser problema de CLASSPATH. Por que você não seta o CLASSPATH no seu script ou configura como parâmetro do comando java?
Para finalizar: redirecione o stderr e stdout para algum arquivo de log. Assim você sabe qual o erro exato.
Estou com o problema parecido:
quando executo o codigo no terminal funciona normalmente, quando coloco no crontab o mesmo não funciona, alguem tem alguma solução para java no crontab?
Criei um arquivo gera.sh :
#!/bin/bash
/usr/java/jre1.6.0_07/bin/java -jar /home/teste/dist/Integrateste.jar >> /home/teste/erro.log
coloquei no crontab:
00 02 * * * sh /home/teste/gera.sh
O mesmo chega a executar onde consigo verificar no erro.log mas não completa a execução, alguem pode me ajudar?
Obrigado
Provavelmente no seu log tem uma Stacktrace de erro. Põe ela aqui pra visualizarmos.
Att.
Ola nesse log apenas aparece o mensagem do java que iniciou o processo
Obrigado