A inclusão de um arquivo jar no CLASSPATH ainda não é executável

0

Talvez eu simplesmente não entenda como toda a variável de ambiente CLASSPATH funciona ao tentar encontrar arquivos .jar em seu sistema. Eu pensei que, se você especificou, você poderia lançar arquivos .jar com java da mesma maneira que você pode executar executáveis que estão no seu caminho.

Eu tenho um arquivo java executável ( .jar file) no meu sistema, que eu coloquei em /usr/local/bin/gatk/ . Eu adicionei isso ao meu CLASSPATH via:

export CLASSPATH=/usr/local/bin/gatk/GenomeAnalysisTK.jar

Eu pensei que isso tornaria o arquivo .jar visível para minha JVM. Quando tento invocá-lo com

java -jar GenomeAnalysisTK.jar
#Error: Unable to access jarfile .gatk/GenomeAnalysisTK.jar

Eu posso invocá-lo configurando o caminho absoluto, por exemplo, java -jar /usr/local/bin/gatk/GenomeAnalysisTK.jar , mas prefiro não digitar o caminho completo a cada vez. Eu li muitos dos tutoriais vinculados, mas de alguma forma eu não pareço estar certo e não consigo entender o que estou fazendo de errado.

    
por Simon O'Hanlon 02.06.2014 / 18:02

1 resposta

3

CLASSPATH não serve para procurar por jars. Destina-se a procurar por classes. Colocar um jar em CLASSPATH significa que o java verá as classes dentro do jar, mas não o jar em si.

O que você quer é mais provável que um wrapper de script de shell inicie o jar.

Crie um arquivo de texto contendo as seguintes linhas:

#!/bin/sh
java -jar /usr/local/bin/gatk/GenomeAnalysisTK.jar

Torne o arquivo executável (suponha que você nomeie GenomeAnalysisTK ):

chmod +x GenomeAnalysisTK

Coloque esse arquivo em /usr/local/bin ou ~/bin ou onde você quiser, desde que o caminho esteja no seu $PATH .

De agora em diante, você pode chamar o script de shell e ele iniciará o jar. Não há necessidade de mexer com CLASSPATH anymore.

Alternativamente: com o jar no classpath você pode iniciar a classe principal de dentro do jar assim:

java org.broadinstitute.sting.gatk.CommandLineGATK

A classe principal do jar é especificada no arquivo META-INF/MANIFEST.MF dentro do jar. Para obter mais informações, consulte o artigo da wikipedia sobre arquivos jar .

    
por 02.06.2014 / 19:26