Добавление файла JAR в CLASSPATH по-прежнему не выполняется

6062
Simon O'Hanlon

Возможно, я просто не понимаю, как работает вся CLASSPATHпеременная окружения при попытке найти файлы .jar в вашей системе. Я подумал, что если вы укажете это, вы сможете запускать файлы .jar javaпочти так же, как вы можете запускать исполняемые файлы, которые находятся на вашем пути.

У меня есть исполняемый Java-архив ( .jarфайл) в моей системе, в котором я застрял /usr/local/bin/gatk/. Я добавил это к моей CLASSPATHчерез:

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

Я думал, что это сделает .jarфайл видимым для моей JVM. Когда я пытаюсь вызвать его с

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

Я могу вызвать его, задав абсолютный путь, например
java -jar /usr/local/bin/gatk/GenomeAnalysisTK.jar, однако я бы не стал каждый раз вводить полный путь. Я прочитал многие из связанных уроков, но почему-то я не понимаю, как это правильно, и я не могу понять, что я делаю неправильно.

0

1 ответ на вопрос

3
lesmana

CLASSPATH is not meant to search for jars. It is meant to search for classes. Putting a jar in CLASSPATH means java will see the classes inside the jar, but not the jar itself.

What you want is more likely a shell script wrapper starting the jar.

Create a text file containing the following lines:

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

Make the file executable (suppose you name it GenomeAnalysisTK):

chmod +x GenomeAnalysisTK 

Put that file in /usr/local/bin or ~/bin or wherever you want provided the path is in your $PATH.

From now on you can call the shell script and it will start the jar. No need to mess with CLASSPATH anymore.


Alternatively: with the jar in the classpath you can start the main class from inside the jar like this:

java org.broadinstitute.sting.gatk.CommandLineGATK 

The main class of the jar is specified in the file META-INF/MANIFEST.MF inside the jar. For more information see the wikipedia article about jar files.

Большое спасибо. Я сходил с ума. У меня нет большого опыта использования программ на основе Java, так что это большая помощь, спасибо. Simon O'Hanlon 9 лет назад 0

Похожие вопросы