Não sei por que eles não estão funcionando, mas é assim que um arquivo jar é agendado em um dos meus servidores:
/path/to/jre/bin/java -jar yourjavaprogram.jar
Eu devo estar ignorando algo, mas eu tentei várias maneiras de fazer isso funcionar.
Estou trabalhando em um super computador sem direitos de administrador. Eu preciso usar uma versão java específica para um programa em particular, mas eu não quero fazer disso o java padrão para tudo.
Medidas tomadas: Eu baixei o jre apropriado e adicionei as seguintes linhas no início do meu script:
export PATH="/path/to/jre/bin/:$PATH"
export JAVA_HOME="/path/to/jre"
echo $PATH
echo ""
echo $JAVA_HOME
Eu obtenho os caminhos apropriados quando faço eco durante o script e, como esperado, $ PATH e $ JAVA_HOME retornam aos valores originais depois que o script é concluído. O problema é que os programas chamados durante o script não estão usando o java que eu preciso deles (e, portanto, falha na versão java incorreta). Se eu executar os mesmos comandos de exportação no shell antes de executar o script, os programas serão executados conforme o esperado.
Eu também não tenho controle sobre como o java é chamado porque estou usando um programa ( PBcR
) que chama uma série de outros programas. Aqui está a única ligação no meu script:
/path/to/bin/PBcR \
-length 500 \
-partitions 200 \
-l lambda \
-s pacbio.spec \
-fastq pacbio.filtered_subreads.fastq \
genomeSize=50000
Perguntas:
Eu também tentei colocar os comandos export
em um arquivo separado e chamar source
nesse arquivo, mas isso não parece mudar nada.
Eu realmente aprecio sua ajuda.
em execução no CentOS 6.6; shell bash;
Não sei por que eles não estão funcionando, mas é assim que um arquivo jar é agendado em um dos meus servidores:
/path/to/jre/bin/java -jar yourjavaprogram.jar
Acabou sendo um erro bobo. Eu estava definindo meu $ PATH e $ JAVA_HOME usando ~
em vez de um caminho completo (por exemplo, ~/path/to/java
em vez de /path/to/java
, como coloquei na minha pergunta original). Eu obviamente ignorei esse detalhe "menor" ao postar minha pergunta original.
Ao tentar depurar isso, aprendi que o "programa" que chama java era na verdade um script perl, e o perl não resolve ~
como bash
.
Agradeço sua ajuda.