1

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

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

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

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

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

问题已解决,我能够毫无问题地运行我的程序。但是,我的程序应该从根目录运行,即当我打开 linux 终端时它所在的目录,而无需发出“cd”命令。

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

/home/demo/Desktop/xlsToCsv/

jars 文件夹的路径是:

/home/demo/Desktop/xlsToCsv/jars/*

有人可以向我解释我必须做什么,以及原因吗?因为更多的是运行程序,所以想知道原因,了解java中的classpath机制。

4

1 回答 1

1

避免使用相对类路径。和“./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
于 2016-02-11T14:07:11.207 回答