0

在 Linux 下,我试图运行一个 jar 文件,如下所示:

java -jar plantuml.jar -testdot

同时CLASSPATH设置为以下任何一项(文件位于/home/user/plantuml.jar):

export CLASSPATH=/home/user
export CLASSPATH=/home/user/
export CLASSPATH=/home/user/plantuml.jar

在任何一种情况下,无论我如何定义CLASSPATHjava命令都会给出错误Unable to access jarfile plantuml.jar。我在这里做错了什么?

4

4 回答 4

2

您必须在参数之后提供完整路径-jar。因此,对于您的示例,您必须致电

java -jar /home/user/plantuml.jar -testdot

$CLASSPATH仅评估以查找其他文件(类/资源),而不是在命令行中定义的 jar 文件。

于 2013-06-07T07:31:11.823 回答
2
export CLASSPATH="/path/to/class_or_jar1":"/path/to/class_or_jar2":"${CLASSPATH}" 
于 2017-09-13T04:41:15.643 回答
0

当您按名称引用类时,类路径用于查找类。它本质上是一个路径列表(目录和 jar/zip 文件),当使用ClassLoader.getResourceAsStream().

传递给命令行上 -jar 选项的值是 JAR 文件的文件路径。

因此,如果您仅按名称引用 jar 文件,它将找不到 jar 文件。CLASSPATH 中的 JAR 文件路径应该是“包含”其他资源的路径元素。

你需要在这里做的是

  1. 尝试执行 jar 时提供 jar 文件的完整路径
  2. 将类路径设置为 jar 文件的路径,然后运行 ​​java 命令,给出要执行的主类的名称。
于 2013-06-07T07:32:14.957 回答
0

也许您缺少主类的名称或 jar 的路径。您是否尝试过执行它:

java -jar full_path/plantuml.jar package.YourClass -testdot

您的程序是否依赖于其他课程?如果是,您可能需要添加 -cp 参数。

于 2013-06-07T07:41:36.057 回答