Eclipse не показывает классы из внешнего файла JAR

В настоящее время я пытаюсь разработать плагин с использованием Bukkit API в Eclipse. Однако, похоже, я не могу импортировать определенные классы из файла jar API. Если я открою файл jar и посмотрю список классов, классы там есть. Однако eclipse не примет импорт этих классов в мои собственные классы. Он показывает ошибку, обозначающую:

[имя класса] не может быть преобразован в тип

Я не вижу причин, по которым класс не должен быть принят. Другие классы из того же пакета импортируются корректно. У других разработчиков, использующих Bukkit API, такой проблемы нет (я специально спросил).

Изображение, показывающее ошибку:

Класс EntityEnderman находится в том же пакете, что и класс PathfinderGoalEndermanPickupBlock. Но EntityEnderman импортируется правильно, а PathfinderGoalEndermanPickupBlock нет.

На рисунке показано, что произойдет, если я выберу параметр Исправить настройку проекта:

Я уже пытался вручную редактировать путь сборки.

Изображение, показывающее доказательство того, что класс действительно добавлен в путь сборки проекта:

Почему это может произойти и как это исправить?

Я использую версию 1.8 API, которую можно найти на spigotmc.org. Я использую новейшее затмение, доступное в репозитории Linux Mint (Eclipse 3.8). Однако эта же ошибка возникает в Netbeans 8.


person DonyorM    schedule 19.12.2014    source источник
comment
возможно, сначала очистка вашего проекта, а затем попытка импорта может помочь   -  person vikeng21    schedule 19.12.2014
comment
@vikeng21 хммм. Не работает. Возможно, это больше проблема с java или что-то в этом роде, потому что это проблема как в netbeans, так и в eclipse.   -  person DonyorM    schedule 19.12.2014
comment
вы уже снова загружаете API с сайта spigotmc.org или подойдет другая последняя версия?   -  person Ye Win    schedule 19.12.2014
comment
@YeWin Это самая новая версия, это практически первое, что я попробовал.   -  person DonyorM    schedule 19.12.2014
comment
Вы можете попробовать написать импорт вручную или удалить и повторно импортировать библиотеку. Или затем полностью воссоздать проект.   -  person Bubletan    schedule 19.12.2014
comment
@Bubletan Я сделал все это, на самом деле, последнее я сделал в двух разных IDE. Я даже использовал две немного разные (но для целей этого поста эквивалентные) библиотеки.   -  person DonyorM    schedule 19.12.2014
comment
@DonyorM А вы уверены, что в вашем проекте нет конфликтов зависимостей?   -  person SSC    schedule 19.12.2014
comment
@ Mr.777 В моем проекте есть только одна библиотека (зависимость), на которую ссылаются. Это Java SE. Так что да, я уверен.   -  person DonyorM    schedule 19.12.2014
comment
Затем вы можете попробовать еще одну вещь, извлечь банку и поместить извлеченные файлы в свой код [я знаю, что это худшее решение], но просто для того, чтобы узнать, что именно не так.   -  person SSC    schedule 19.12.2014
comment
@ Mr.777 Хорошо, только что закончил. Я чувствую себя немного глупо сейчас. Класс отмечен только видимостью на уровне пакета. Вы хотите что-то добавить в качестве ответа? Я отмечу его как принятое, так как вы помогли мне найти проблему.   -  person DonyorM    schedule 19.12.2014
comment
Вы хотите, чтобы я добавил это в качестве ответа? :)   -  person SSC    schedule 19.12.2014
comment
@ Mr.777 Конечно, продолжайте.   -  person DonyorM    schedule 19.12.2014


Ответы (2)


Перво-наперво:

Вы уверены, что в вашем проекте нет конфликтов зависимостей?

Если нет, [согласно вашим комментариям]

Вы можете попробовать еще одну вещь, извлечь банку и поместить извлеченные файлы в свой код [я знаю, что это худшее решение], но только ради того, чтобы узнать, что именно не так.

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

person SSC    schedule 19.12.2014

На этой неделе у меня была аналогичная проблема: jar отображался в Eclipse, и я мог «видеть» в нем классы, но невозможно было импортировать классы в мой код, такие же ошибки, как и у вас.

Оказывается, банка была повреждена в моем локальном репозитории maven: я не смог ее открыть (с помощью winzip). Исправить это было так же просто, как удалить каталог версии jar в моем локальном репо и снова создать приложение. На этот раз jar загрузился правильно, и я смог использовать классы из него.

person Vincent F    schedule 29.06.2015