-cp ./ Почему я всегда должен вручную включать CWD в CP при запуске Java?

У меня никогда не было такой проблемы, и когда я запускал Java-программы (в терминале), я просто говорил:

    java className

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

не удалось найти или загрузить основной класс className

Чтобы это исправить я добавляю -cp ./ мой рабочий каталог curring к classpath, и затем программа запускается. Я не уверен, что добавить к моим переменным среды, чтобы текущий рабочий каталог всегда был в пути к классу, избегая этого более длинного сценария,

    java -cp ./ className

В соответствии с этой статьей Stackru стандартная реализация Oracle ищет имя текущего класса в текущем рабочем каталоге.

(Я использую Java 8 и Windows 8.1)

1 ответ

Решение

Путь к классу, если он не найден в командной строке и не найден в CLASSPATH переменная окружения, по умолчанию используется текущий каталог.

-cp classpath

Определяет список каталогов, JAR-файлов и ZIP-архивов для поиска файлов классов. Разделите записи пути к классу точкой с запятой (;)

Указание -classpath или -cp переопределяет любой параметр переменной среды CLASSPATH.

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

Если вы укажете -cp, то вы должны явно включить . (текущий каталог) в classpath, или он не будет включен.

Если не используется -cp не работает, но явно заявляет -cp . работает, то вы должны иметь CLASSPATH переменная среды определена, и она не должна явно включать ., Это объясняет, почему переопределение CLASSPATH в том числе . с -cp вариант работает.

Другие вопросы по тегам