Vestail
@Vestail
Software Engineer

Почему игнорируется переменная CLASSPATH после создании пакета в Java программе?

В переменной среды CLASSPATH прописаны пути к нескольким .jar библиотекам (.;D:\lib1.jar; D:\lib2.jar). Если не использовать пакеты(точнее использовать default package) в программах, доступ к классам из этих библиотек осуществляется без проблем. Но если использовать пакет, javac выдает ошибку о том, что не знает таких классов.
То есть, например, такое компилируется нормально:
javac C1.java

public class C1 {
    public void method() {
        ClassFromLib1.method();
    }
}

А это с ошибкой.
javac C1.java

package P1; 
public class C1 {
    public void method() {
        ClassFromLib1.method();
    }
}


error: cannot find symbol
ClassFromLib1.method();
symbol: variable ClassFromLib1

Почему это происходит?
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
Vestail
@Vestail Автор вопроса
Software Engineer
Проблема решена. Оказывается классы из библиотек которые я использовал, были в default package, а в Java нельзя вызывать классы из default package в какой либо именованный пакет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@protven
Потому что класс C1 должен лежать в директории P1 и компилировать его надо
javac P1/C1.java

И вообще иерархия пакетов и директорий, в которых лежат классы должна совпадать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы