Компиляция Java UNIX - использование пути к классам - PullRequest
0 голосов
/ 24 октября 2018

Предположим, что для проекта используется следующая структура папок: ProjectName / src / имя_пакета

Все исходные файлы, необходимые для компиляции, находятся в папке имя_пакета .

При попытке скомпилировать программу из папки имя_пакета с помощью команды java ClassName возникает ошибка ( java.lang.NoClassDefFoundError ).

С другой стороны, аналогичная команда, используемая в папке src (java package_name/ClassName), правильна.

В моем понимании это потому, что

Если -classpath и -cp не используются, а CLASSPATH не задан, путь к классу пользователя состоит из текущего каталога (.).

Однако в ProjectName / src / package_name , java -cp .. ClassName дает вышеупомянутую ошибку, хотя я считаю, что она должна быть эквивалентна java -cp . package_name/ClassName в одном каталоге выше.

Аналогично, при попытке запустить программу из разных мест на диске (используя обаместный и абсолютный рая получаю такую ​​же ошибку.

Есть идеи, почему?

РЕДАКТИРОВАТЬ:

Что такое поразительный, команда java -cp .. package_name/ClassName (а также ее аналог с ".", Который дает тот же результат) теперь бросаетдругая ошибка.В ProjectName / files у меня есть несколько файлов .txt, которые моя программа читает, и вышеупомянутая команда выдает FileNotFoundException, в то время как java package_name/ClassName из каталога src - нет.Это означает, что каталог, из которого вы запускаете файл, влияет на точку, в которой вычисляется относительный путь.Это так?

...