Ограничение доступа к классу из-за ограничения на требуемую библиотеку

Я получаю это сообщение об ошибке в Eclipse:

Access restriction: The type DirectoryWalker is not accessible
due to restriction on required library 
/Library/Java/Extensions/commons-io-1.4.jar

что это значит? Есть еще один такой вопрос на ту же тему, но в данном случае он не применим. Я не создаю новый класс Java, я пытаюсь использовать один.

9 ответов

Решение

Похоже, что другая используемая вами библиотека также требует ввода-вывода Apache Commons, но другой версии. Наличие части кода (транзитивно), имеющего доступ к двум версиям одного и того же пакета, немного сложно. Вероятно, вы можете расположить его так, чтобы ваш код и другая библиотека использовали одну и ту же версию. С CLASSPATH все намного проще!:)

Перейдите к пути сборки Java и на вкладке Библиотека удалите Системную библиотеку JRE. Затем снова Добавить библиотеку -> Системная библиотека JRE

Работал для меня

Это моя самая нелюбимая ошибка, я сталкивался с ней несколько раз, и "ограничение на требуемую библиотеку" просто скучно, чтобы вы почесали голову. Однако это легко исправить.

Самый быстрый способ (я использую Helios) - это перейти в Window->Preferences->Java->Compiler->Errors/Warnings, найти и открыть маркер "Устаревшие и ограниченные API", а также установить Forbidden and Discouraged Reference на что-то кроме ошибки.

"Предупреждение", как правило, лучше всего, так как что-то там, на земле Java, вызывает это, и вам, вероятно, нужна сноска. @SuppressWarnings и его двоюродные братья в 98% случаев оказывают такое же влияние на личную и социальную логику программиста, как, скажем, эфирный прилив. Но это только мой скромный анализ.

Удачи!

Для чего это стоит, у меня тоже недавно была эта ошибка (другая библиотека).

Моя IDE (MyEclipse) ссылается на определенную библиотеку как часть общего пути к классам проекта, но у меня также была копия соответствующего JAR в папке расширений Java моего компьютера.

Получившееся столкновение дало (бесполезную) ошибку, с которой вы столкнулись. Таким образом, для всех, кто столкнулся с этой ошибкой, вы можете рассмотреть и ваши пути к классам.

Параметры пути сборки проекта -> вкладка "Библиотеки" -> выберите "Системная библиотека JRE" -> кнопку "Редактировать" -> переключиться с вкладки "Среда выполнения", в которой говорится, что J2SE 1.x (jdk1.6.0_21) на JRE рабочей области по умолчанию (jdk1.6.0_21) [Собранный] ]

Это лучшее решение наверняка!

У меня была та же ошибка, что и при исправлении: установка JRE для рабочей области по умолчанию совпадала с проектом, у меня была JRE6 для рабочей области и JRE7 для проекта, настройка обоих JRE7 устранила проблему

В моем случае я смог решить эту проблему, сняв отметку с атрибута папки "Только для чтения" в свойствах папки проекта.

Затем я переконфигурировал Build path проекта, затем Clean.

Это решило ошибку.

Если вы используете m2eclipse, я считаю, что "Обновить конфигурацию проекта" исправляет это.

Щелкните правой кнопкой мыши проект, выберите Maven > Обновить конфигурацию проекта и подождите несколько секунд.

Для тех, кто ищет, почему Eclipse может построить проект, а Maven - нет, проверьте, есть ли у вас JUnit как библиотека или зависимость от плагина. Если он будет добавлен в виде библиотеки, Maven не сможет его поднять и выбросить множество ограничений доступа (тип xyz не является API).

Другие вопросы по тегам