将jar文件添加到CLASSPATH仍然无法执行

将jar文件添加到CLASSPATH仍然无法执行

也许我只是不明白CLASSPATH在尝试查找系统上的 .jar 文件时整个环境变量是如何工作的。我认为如果您指定它,您就可以java像启动路径上的可执行文件一样启动 .jar 文件。

.jar我的系统上有一个可执行 Java 档案(文件),我将其保存在 中/usr/local/bin/gatk/。我将其添加到我的CLASSPATHvia 中:

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,但是我不想每次都输入完整路径。我读过许多链接的教程,但不知何故我似乎没有做到这一点,我不明白我做错了什么。

答案1

CLASSPATH不是用来搜索 jar 的。而是用来搜索类的。放入 jarCLASSPATH意味着 java 将看到类里面罐子,但不是罐子本身。

您更可能想要一个启动 jar 的 shell 脚本包装器。

创建一个包含以下行的文本文件:

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

使文件可执行(假设您将其命名为GenomeAnalysisTK):

chmod +x GenomeAnalysisTK

将该文件放入/usr/local/bin~/bin放入您想要的任何位置,前提是路径在您的$PATH.

从现在起,您可以调用 shell 脚本,它将启动 jar。无需CLASSPATH再费心了。


或者:使用类路径中的 jar,您可以像这样从 jar 内部启动主类:

java org.broadinstitute.sting.gatk.CommandLineGATK

META-INF/MANIFEST.MFjar 的主类在jar 内的文件中指定。有关更多信息,请参阅有关 jar 文件的维基百科文章

相关内容