在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
无论哪种情况,无论我如何定义CLASSPATH
, java
命令都会给出错误Unable to access jarfile plantuml.jar
。 我在这里做错了什么?
你必须在参数-jar
之后提供完整的路径。 所以对于你的例子,你必须打电话
java -jar /home/user/plantuml.jar -testdot
仅对$CLASSPATH
进行求值,以查找其他文件(类/资源),而不是在命令行中定义的jar文件。
export CLASSPATH="/path/to/class_or_jar1":"/path/to/class_or_jar2":"${CLASSPATH}"
也许你缺少主类或jar的路径的名称。 你有没有试过执行它:
java -jar full_path/plantuml.jar package.YourClass -testdot
你的程序依赖于其他类吗? 如果是,则可能需要添加-cp参数。
当你通过名字引用类路径时,类路径被用来查找类。 它基本上是JVM在使用ClassLoader.getResourceAsStream()
方法时需要查找类或其他资源的路径列表(目录和jar / zip文件ClassLoader.getResourceAsStream()
。
在命令行上传递给-jar选项的值是JAR文件的文件路径。
所以,如果你只是通过名字来引用jar文件,它将不会找到一个jar文件。 CLASSPATH中的JAR文件路径应该是一个“包含”其他资源的路径元素。
你需要在这里做什么,也是