Использование вторичного не общедоступного класса Java приводит к ошибке «Тип невидим», даже если доступные методы являются общедоступными в главном классе. - PullRequest
5 голосов
/ 28 апреля 2011

У меня есть файл Main.java:

public class Main{

  private EntityDrawer entityDrawer;

  public void setEntityDrawer(EntityDrawer entityDrawer) {
    this.entityDrawer = entityDrawer;
  }

  public EntityDrawer getEntityDrawer() {
    return entityDrawer;
  }
}

class EntityDrawer {

  private Empleado empleado;  

  public Empleado getEmpleado() {
    return empleado;
  }

  public void setEmpleado(Empleado empleado) {
    this.empleado = empleado;
  }

}

Если я пытаюсь получить доступ из другого файла, он работает, если я только пытаюсь получить доступ к entityManager:

Main main = new Main();
main.getEntityDrawer(); // NO PROBLEM!

Но если я пытаюсь получить доступ к одному из атрибутов (даже общедоступных) из entityManager, он не работает:

Main main = new Main();
main.getEntityDrawer().getEmpleado(); // Gives error "The type EntityDrawer is not visible"

Я не могу понять, почему это происходит, может кто-нибудь дать мне некоторое представление об этой проблеме? ...

Ответы [ 3 ]

10 голосов
/ 28 апреля 2011

Я предполагаю, что вы пытаетесь использовать пакет локального класса EntityDrawer в другом пакете, чего вы не можете сделать

Попробуйте сделать класс public

5 голосов
/ 28 апреля 2011

Сделать класс public или переместить вызывающий класс в тот же пакет.

2 голосов
/ 01 марта 2014

Меня тоже раздражает эта проблема, я удалил ненужные jar-файлы и добавил только необходимые jar-файлы в classpath. Иногда, если вы поместите избыточные файлы JAR в путь к классу, это приведет к конфликту файлов JAR, и это покажет ошибку (например, «тип org.apache.lucene.index.DirectoryReader не отображается») ,

Спасибо.

...