Ограничение доступа к классу из-за ограничения на требуемую библиотеку
Я получаю это сообщение об ошибке в 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).