Das Hinzufügen einer JAR-Datei zu CLASSPATH ist immer noch nicht ausführbar

6154
Simon O'Hanlon

Vielleicht verstehe ich einfach nicht, wie die gesamte CLASSPATHUmgebungsvariable funktioniert, wenn ich versuche, .jar-Dateien auf Ihrem System zu finden. Ich dachte, wenn Sie es angegeben hätten, könnten Sie .jar-Dateien javaauf die gleiche Art und Weise starten wie ausführbare Dateien, die sich in Ihrem Pfad befinden.

Ich habe ein ausführbares Java-Archiv (eine .jarDatei) auf meinem System, in dem ich stecke /usr/local/bin/gatk/. Ich habe dies zu meinem CLASSPATHvia hinzugefügt :

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

Ich dachte, das würde die .jarDatei für meine JVM sichtbar machen . Wenn ich versuche es mit anzurufen

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

Ich kann es aufrufen, indem ich den absoluten Pfad setze, z. B.
java -jar /usr/local/bin/gatk/GenomeAnalysisTK.jarmöchte ich nicht jedes Mal den vollständigen Pfad eingeben. Ich habe viele der verlinkten Tutorials gelesen, aber irgendwie scheint ich das nicht richtig zu verstehen und ich kann nicht verstehen, was ich falsch mache.

0

1 Antwort auf die Frage

3
lesmana

CLASSPATHist nicht für die Suche nach Gläsern gedacht. Es soll nach Klassen suchen. Durch das Einsetzen eines Glases werden in CLASSPATHJava die Klassen im Glas angezeigt, nicht jedoch das Glas selbst.

Was Sie wollen, ist eher ein Shell-Script-Wrapper, der das Jar startet.

Erstellen Sie eine Textdatei mit den folgenden Zeilen:

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

Machen Sie die Datei ausführbar (vorausgesetzt, Sie nennen sie GenomeAnalysisTK):

chmod +x GenomeAnalysisTK 

Legen Sie diese Datei an /usr/local/binoder ~/binwo immer Sie möchten, vorausgesetzt, der Pfad befindet sich in Ihrem $PATH.

Von jetzt an können Sie das Shell-Skript aufrufen und es wird das Glas starten. Sie brauchen sich nicht mehr zu verstecken CLASSPATH.


Alternativ: Mit dem Glas im Klassenpfad können Sie die Hauptklasse wie folgt aus dem Glas heraus starten:

java org.broadinstitute.sting.gatk.CommandLineGATK 

Die Hauptklasse der Dose ist in der Datei META-INF/MANIFEST.MFinnerhalb der Dose angegeben. Weitere Informationen finden Sie im Wikipedia-Artikel zu JAR-Dateien .

Danke vielmals. Ich wurde verrückt. Ich habe nicht viel Erfahrung mit Java-basierten Programmen, also ist dies eine große Hilfe, danke. Simon O'Hanlon vor 10 Jahren 0