Пакет не существует ошибка - PullRequest
2 голосов
/ 27 июля 2011

Я только что вернулся, чтобы исправить некоторые ошибки в небольшой программе, которую я написал, и теперь я не могу скомпилировать, поскольку пакет не существует (согласно javac).

Насколько я знаю, я ничего не изменил ни в моем пути к классам, ни в содержимом моих каталогов. Я не знаю, были ли какие-либо обновления Java между ними.

В моем корневом каталоге у меня есть четыре файла Java, которые составляют мою программу. У них нет приписанного им пакета. Кроме того, у меня есть структура каталогов org\apache\commons\cli в корневом каталоге, которая содержит Java-файлы CLI от Apache Commons. У файлов Apache есть приписанный пакет, который отражает структуру каталогов, в которых они лежат.

Если я введу команду javac -verbose -d build CommandLine.java, произойдет сбой с

CommandLine.java:28: package org.apache.commons.cli does not exist
import org.apache.commons.cli.*;
^

CommandLine.java является точкой входа в программу.

Компилятор не пытается компилировать файлы CLI, и если я скомпилирую их заранее, сбой все равно будет иметь место. Кроме того, CLI также доступен в моем classpath.

Я использую javac 1.6.0_12.

Что я могу сделать / попробовать?

.

РЕДАКТИРОВАНИЕ ДЛЯ ОТВЕТА:

Как принято ниже, я изменил команду компиляции следующим образом:

javac -verbose -d build -classpath . CommandLine.java

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

.

ИЗДАНО ДЛЯ ПРИЧИНЫ ПРОБЛЕМЫ

Я установил программу, которая также использовала CLASSPATH для запуска своих собственных вещей. Он изменил CLASSPATH, принадлежавший пользователю, но оставил глобальный в покое. Я снова добавил java classpath, и он снова работает!

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Если это не опечатка, обратите внимание, что вы сказали com\apache\commons\cli, но импорт хочет org.apache.commons.cli - org против com

1 голос
/ 27 июля 2011

Вы распаковали этот Apache JAR и добавили файлы .class в свое приложение?Почему вы просто не добавили JAR в CLASSPATH?

Вы не должны зависеть от переменной окружения CLASSPATH.Лучше использовать параметр -classpath для javac.exe при компиляции и java.exe при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...