Я пытаюсь скомпилировать код Java 1.4, который был создан WSDL2Java IBM на Java5, без воссоздания заглушек и увидел эту ошибку в Eclipse .
Я предполагаю, что сгенерированные заглушки должны просто компилироваться, пока есть среда выполнения (они есть).jars
Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar
Полное имя класса javax.xml.namespace.QName
Что именно здесь происходит? Это тот случай, когда я пытаюсь переработать свинью из колбасы? Мне лучше воссоздать заглушки?
Ответы:
Есть еще одно решение, которое также работает.
Это работает, потому что у вас есть несколько классов в разных файлах JAR. Удаление и повторное добавление библиотеки JRE сделает правильные классы первыми. Если вы хотите фундаментальное решение, убедитесь, что вы исключаете файлы JAR с теми же классами.
Для меня есть:
javax.xml.soap.SOAPPart
в трех различных банках:axis-saaj-1.4.jar
,saaj-api-1.3.jar
иrt.jar
источник
http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html работал лучше всего для меня.
В Windows: Windows -> Настройки -> Java -> Компилятор -> Ошибки / предупреждения -> Устаревший и ограниченный API -> Запрещенная ссылка (правила доступа): -> изменить на предупреждение
В Mac OS X / Linux: Eclipse -> Настройки -> Java -> Компилятор -> Ошибки / предупреждения -> Устаревший и ограниченный API -> Запрещенная ссылка (правила доступа): -> изменить на предупреждение
источник
Я встретил ту же проблему. Я нашел ответ на сайте: http://www.17ext.com .
Сначала удалите системные библиотеки JRE. Затем снова импортируйте системные библиотеки JRE.
Я не знаю почему. Как бы то ни было, это решило мою проблему, надеюсь, это поможет вам.
источник
Я предполагаю, что вы пытаетесь заменить стандартный класс, который поставляется с Java 5, одним классом в вашей библиотеке.
Это не разрешено в соответствии с условиями лицензионного соглашения, однако AFAIK не применялся до Java 5.
Я видел это с QName раньше, и я «исправил» это, удалив класс из банки, которую я имел.
РЕДАКТИРОВАТЬ http://www.manpagez.com/man/1/java/ примечания для опции "-Xbootclasspath:"
«Приложения, которые используют эту опцию с целью переопределения класса в rt.jar, не должны развертываться, поскольку это противоречило бы лицензии двоичного кода Java 2 Runtime Environment».
http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
«Ограничения технологии Java. Вы не можете изменять интерфейс платформы Java (« JPI », определенный как классы, содержащиеся в пакете« java »или любых подпакетах пакета« java »), создавая дополнительные классы в JPI или вызывая иным образом добавление или изменение классов в JPI. В случае, если вы создаете дополнительный класс и связанные API (-ы), который (i) расширяет функциональность платформы Java, и (ii) предоставляется сторонним разработчикам программного обеспечения для В целях разработки дополнительного программного обеспечения, которое вызывает такой дополнительный API, вы должны незамедлительно опубликовать точную спецификацию такого API для свободного использования всеми разработчиками. Вы не можете создавать или разрешать своим лицензиатам создавать дополнительные классы, интерфейсы,или подпакеты, которые в любом случае обозначены как «java», «javax», «sun» или аналогичные соглашения, как указано в Sun в любом обозначении соглашения об именовании. "
источник
Я тоже получаю эту ошибку, но мой проект построен из командной строки с использованием Maven и компилятора tycho (это набор плагинов OSGi). После массового разбора людей, имеющих ту же проблему, но исправляющих ее в Eclipse, а не в командной строке, я нашел сообщение на форуме разработчиков Tycho, в котором отвечал на мой вопрос, используя конфигурацию,
pom.xml
чтобы игнорировать предупреждение компилятора об ограничении доступа:Более подробную информацию можно найти в FAQ Tycho . Это заняло у меня ВОЗРАСТ для разработки, поэтому я решил, что помогу кому-нибудь другому, пытающемуся исправить эти ошибки ограничения доступа из командной строки, разместив этот ответ.
источник
Windows -> Preferences -> Java Compiler
источник
У меня тоже была эта проблема. Очевидно, я установил JRE на 1,5 вместо 1,6 в моем пути сборки.
источник
В дополнение к решению Нельс Бекман , у меня есть следующие советы:
Под Configure Build Path я должен был изменить порядок своих записей в Order and Export .
Кроме того, как разработчик Eclipse PDE, мне нужно было изменить порядок моих зависимостей в моем
MANIFEST.MF
, добавив проблемный пакет первым в списке.Играя с этими циферблатами, а также запустив Project> Clean между ними, я смог устранить эти предупреждения.
источник
для меня вот как я это решаю
под библиотеками
Примечание: убедитесь, что в Eclipse / Preferences (НЕ проект) / Java / Installed JRE, что JDK указывает на папку JDK, а не JRE C: \ Program Files \ Java \ jdk1.8.0_74
источник
Извините за обновление старого POST. Я получил сообщение о проблеме и решил ее, как указано ниже.
Предполагая, что вы используете плагин Eclipse + m2e maven, если вы получаете эту ошибку ограничения доступа, щелкните правой кнопкой мыши проект / модуль, в котором у вас есть ошибка -> Свойства -> Путь сборки -> Библиотека -> Заменить JDK / JRE к тому, который используется в рабочей области Eclipse.
Я выполнил вышеуказанные шаги, и проблема решена.
источник
В случае, если вы уверены, что должны иметь доступ к данному классу, это может означать, что вы добавили в свой проект несколько jar-файлов, содержащих классы с одинаковыми именами (или путями), но разным содержимым, и они затмевают друг друга (как правило, старые пользовательские настройки). build jar содержит встроенную старую версию сторонней библиотеки).
Например, когда вы добавляете jar, реализующий:
но также и более старая версия, реализующая только:
В редакторе кода все работает нормально, но во время компиляции происходит сбой, если «старая» библиотека затмевает новую - d2 внезапно оказывается «отсутствующей или недоступной», даже если она там есть.
Решение состоит в том, чтобы проверить порядок библиотек времени компиляции и убедиться, что библиотека с правильной реализацией идет первой.
источник
Перейдите к пути сборки Java в свойствах проекта. Удалите существующую системную библиотеку JRE, затем добавьте ее снова, например, Add Library -> JRE Lib - выберите jre ---> Finish. Наконец, выберите заказ и вкладку экспорта, выберите JRE Lib и двигайтесь вверх. Вот и все.
источник
Просто измените порядок пути к библиотекам вашего проекта. Щелкните правой кнопкой мыши проект> Путь сборки> Настроить путь сборки> Выбрать порядок и экспорт (вкладка)> Изменить порядок записей. Я надеюсь, что перемещение "JRE System Library" внизу будет работать. Это сработало для меня. Легко и просто .... !!!
источник
В моем случае было несоответствие между путем сборки JRE и установленным JRE в среде выполнения. Я перешел в Project> Properties> Java compiler. Внизу было предупреждающее сообщение.
Я нажал на ссылки «Установленный JRE», «Среда выполнения», «Путь сборки Java» и изменил версию JDK на 1.7, и предупреждение исчезло.
источник
Добавление правильной системы JRE через путь сборки - решение, но ваше затмение все еще может иметь ошибку. Чтобы решить эту проблему, перейдите в Java Build path -> Order and Export и переместите вашу системную библиотеку JRE вверху. Это решило мою проблему.
источник