Доступ к классам в пакете по умолчанию в файле JAR - PullRequest
4 голосов
/ 10 сентября 2010

У меня есть приложение Java, а файлы Java находятся в пакете с именем app. Я добавил файл JAR в путь к классам. Все классы в файле JAR находятся в пакете по умолчанию.

Из моего приложения Java я не могу получить доступ к классам этого файла JAR. Только если я поместил файлы приложения в пакет по умолчанию, я смогу увидеть классы в файле JAR. Почему это так?

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Вы больше не можете import из пакетов по умолчанию.(Раньше вы могли это делать в ранних реализациях Sun в javac, но это не было разрешено в спецификации языка.) Очевидные решения:

  • Не используйте пакет по умолчанию, если это возможно.Переместите все классы, интерфейсы и перечисления в именованные пакеты.[хорошо]
  • Переместите ваши упакованные классы в пакет по умолчанию.[плохо]
  • Доступ к классам через рефлексию.[ужасно]
1 голос
/ 10 сентября 2010

Классы в пакете по умолчанию не видны классам внутри пакета.

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

Всегда помещайте классы в пакет всякий раз, когда вы хотите повторно использовать классы.

...