如何在Linux中设置CLASSPATH让javafindjar文件?

在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 。 我在这里做错了什么?

你必须在参数-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文件路径应该是一个“包含”其他资源的路径元素。

你需要在这里做什么,也是

  1. 尝试执行jar时提供jar文件的完整路径
  2. 将类路径设置为jar文件的路径,然后运行java命令,给出要执行的主类的名称。