在linux中编译并运行java程序,path为.java文件和外部jar的path

昨天我解决了一个问题,在这里在stackoverflow中的答案。 但是我最终还是遇到了其他的问题,但是我会尽力澄清:

我在/ home / demo / Desktop / xlsToCsv /目录下有一个项目文件夹,里面是java文件“xlsToCsv.java”,另一个目录是我需要的外部jar,位于/ home / demo / Desktop / xlsToCsv /瓶。

现在我需要编译和运行我的程序。 昨天我问了这个,我运行了一个命令,假定我已经在/ home / demo / Desktop / xlsToCsv /里面了,命令是:

javac -cp“。:./ jars / *”xlsToCsv.java

java -cp“。:./ jars / *”xlsToCsv

问题解决了,我可以运行我的程序,任何问题。 但是,我的程序从根目录运行,也就是当我打开linuxterminal时不需要做“cd”命令的目录。

所以,当我打开terminal时.java文件的path是:

/家庭/演示/桌面/ xlsToCsv /

而jar文件夹的path是:

/家庭/演示/桌面/ xlsToCsv /瓶/ *

有人可以向我解释我必须做什么,这是什么原因? 因为更多的运行程序,我想知道原因,并了解Java中的类path机制。

谢谢

Solutions Collecting From Web of "在linux中编译并运行java程序,path为.java文件和外部jar的path"

避免使用相对的类路径。 和“./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