Скомпилируйте и запустите Java-программу в Linux с путем к файлу.java и путем к внешним jar-файлам

Вчера я решаю проблему с ответом здесь в stackru. Но я столкнулся с другой проблемой, но постараюсь прояснить:

У меня есть папка проекта в каталоге /home/demo/Desktop/xlsToCsv/, в которой находится java-файл "xlsToCsv.java", и другой каталог с необходимыми мне внешними банками в /home/demo/Desktop/xlsToCsv/ банка.

Теперь мне нужно скомпилировать и запустить мою программу. Вчера я спросил это, и я выполнил команду, которая предполагала, что я уже был в /home/demo/Desktop/xlsToCsv/, и команда была:

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

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

Проблема была решена, и я смог запустить мою программу без каких-либо проблем. Но моя программа запускается из корневого каталога, то есть из каталога, в котором она находится, когда я открываю терминал linux без необходимости выполнения команды "cd".

Итак, когда я открываю терминал, путь к файлу.java:

/ Главная / демо / Desktop / xlsToCsv /

И путь к папке jars:

/ Главная / DEMO / Desktop / xlsToCsv / банки / *

Может кто-нибудь объяснить мне, что я должен делать, и причина так? Поскольку больше, чтобы запустить программу, я хочу знать причины и понять механизм classpath в Java.

Спасибо

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
Другие вопросы по тегам