使用 .java 文件的路径和外部 jar 的路径在 linux 中编译和 运行 java 程序
Compile and Run java program in linux with path to the .java file and path to external jars
昨天我在 Whosebug 上用答案解决了一个问题。但我最终遇到了另一个问题,我会尽量清楚:
我在 /home/demo/Desktop/xlsToCsv/
目录中有一个项目文件夹,其中包含 java 文件 "xlsToCsv.java"
和另一个包含我在 [=18= 中需要的外部 jar 的目录].
现在我需要编译 运行 我的程序。昨天我 运行 假设我已经在 /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机制
避免使用相对类路径。并代替“./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
昨天我在 Whosebug 上用答案解决了一个问题。但我最终遇到了另一个问题,我会尽量清楚:
我在 /home/demo/Desktop/xlsToCsv/
目录中有一个项目文件夹,其中包含 java 文件 "xlsToCsv.java"
和另一个包含我在 [=18= 中需要的外部 jar 的目录].
现在我需要编译 运行 我的程序。昨天我 运行 假设我已经在 /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机制避免使用相对类路径。并代替“./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