在linux中编译并运行java程序,其中包含.java文件的路径和外部JAR的路径

在linux中编译并运行java程序,其中包含.java文件的路径和外部JAR的路径,java,linux,jar,javac,javacompiler,Java,Linux,Jar,Javac,Javacompiler,昨天我在stackoverflow上用答案解决了一个问题。但我最后遇到了另一个问题,我会尽量澄清: 我在/home/demo/Desktop/xlsToCsv/目录中有一个项目文件夹,其中包含java文件“xlsToCsv.java”和另一个目录,其中包含我在/home/demo/Desktop/xlsToCsv/jars中需要的外部JAR 现在我需要编译并运行我的程序。昨天我运行了一个命令,假设我已经在/home/demo/Desktop/xlsToCsv/中,这些命令是: javac -cp

昨天我在stackoverflow上用答案解决了一个问题。但我最后遇到了另一个问题,我会尽量澄清:

我在
/home/demo/Desktop/xlsToCsv/
目录中有一个项目文件夹,其中包含java文件
“xlsToCsv.java”
和另一个目录,其中包含我在
/home/demo/Desktop/xlsToCsv/jars
中需要的外部JAR

现在我需要编译并运行我的程序。昨天我运行了一个命令,假设我已经在
/home/demo/Desktop/xlsToCsv/
中,这些命令是:

javac -cp ".:./jars/*" xlsToCsv.java

java -cp ".:./jars/*" xlsToCsv
问题解决了,我可以毫无问题地运行我的程序。但是,我的程序应该从根目录运行,即打开linux终端时所在的目录,无需发出“cd”命令

因此,当我打开终端时,.java文件的路径是:

/home/demo/Desktop/xlsToCsv/
jars文件夹的路径为:

/主页/演示/桌面/xlsToCsv/jars/*


有人能给我解释一下我必须做什么,以及原因吗?因为运行程序需要更多的时间,我想知道原因并理解java中的类路径机制。

避免使用相对类路径。并指示“/jars/”使用绝对路径“/home/demo/Desktop/xlsToCsv/jars/”

编辑:

javac -cp "/home/demo/Desktop/xlsToCsv/jars/*" /home/demo/Desktop/xlsToCsv/xlsToCsv.java

java -cp "/home/demo/Desktop/xlsToCsv/:/home/demo/Desktop/xlsToCsv/jars/*" xlsToCsv

那么,对你来说,什么是完整的命令?用于编译和运行。了解到文件的路径位于/home/demo/Desktop/xlsToCsv/xlsToCsv.javaIt正在工作,我将在两条注释中添加用于编译和运行文件的命令。compile-->javac-cp“/home/demo/Desktop/xls_to_csv/jars/*”/home/demo/Desktop/xls_to_-csv/xlsToCsv.javaRun-->java-cp“/home/demo/Desktop/xls_to_csv/:/home/demo/Desktop/xls_to_csv/jars/*”xlsToCsvyes我忘了包含目录的类路径