Ja próbuje skompilować Java 1.4 kod, który został stworzony przez IBM WSDL2Java na java5 bez odtworzenie odcinki i zobaczyłem ten błąd w Eclipse .
Zakładam, że wygenerowane kody pośredniczące powinny się po prostu kompilować, o ile środowisko wykonawcze jars
jest dostępne (są).
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
Pełna nazwa klasy to javax.xml.namespace.QName
Co tu się właściwie dzieje? Czy to jest przypadek, w którym próbuję refaktoryzować świnię z kiełbasy? Czy lepiej odtworzyć kody pośredniczące?
Odpowiedzi:
Jest inne rozwiązanie, które również działa.
Działa to, ponieważ masz wiele klas w różnych plikach jar. Usunięcie i ponowne dodanie biblioteki JRE sprawi, że odpowiednie klasy będą pierwsze. Jeśli potrzebujesz podstawowego rozwiązania, upewnij się, że wykluczasz pliki jar z tymi samymi klasami.
Dla mnie mam:
javax.xml.soap.SOAPPart
w trzech różnych słoików:axis-saaj-1.4.jar
,saaj-api-1.3.jar
art.jar
źródło
http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html działał najlepiej dla mnie.
W systemie Windows: Windows -> Preferencje -> Java -> Kompilator -> Błędy / Ostrzeżenia -> Nieaktualne i ograniczone API -> Zabronione odniesienia (reguły dostępu): -> zmień na ostrzeżenie
W systemie Mac OS X / Linux: Eclipse -> Preferencje -> Java -> Kompilator -> Błędy / Ostrzeżenia -> Nieaktualne i ograniczone API -> Zabronione odniesienia (reguły dostępu): -> zmień na ostrzeżenie
źródło
Spotkałem ten sam problem. Odpowiedź znalazłem na stronie: http://www.17ext.com .
Najpierw usuń biblioteki systemowe JRE. Następnie ponownie zaimportuj biblioteki systemowe JRE.
Nie wiem dlaczego, ale to rozwiązało mój problem, mam nadzieję, że może ci pomóc.
źródło
Domyślam się, że próbujesz zastąpić standardową klasę, która jest dostarczana z Javą 5, klasą, którą masz w bibliotece.
Nie jest to dozwolone zgodnie z warunkami umowy licencyjnej, jednak AFAIK nie było egzekwowane aż do Java 5.
Widziałem to wcześniej w QName i „naprawiłem” to, usuwając klasę ze słoika, który miałem.
EDYTUJ http://www.manpagez.com/man/1/java/ uwagi dotyczące opcji „-Xbootclasspath:”
„Aplikacje korzystające z tej opcji w celu przesłonięcia klasy w pliku rt.jar nie powinny być wdrażane, ponieważ naruszyłoby to licencję na kod binarny Java 2 Runtime Environment”.
http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
„Ograniczenia technologii Java. Nie można modyfikować interfejsu platformy Java („ JPI ”, zidentyfikowanego jako klasy zawarte w pakiecie„ java ”lub jakimkolwiek podpakiecie pakietu„ java ”), tworząc dodatkowe klasy w ramach JPI lub w inny sposób powodując dodanie lub modyfikacja klas w JPI. W przypadku utworzenia dodatkowej klasy i powiązanych interfejsów API, które (i) rozszerzają funkcjonalność platformy Java oraz (ii) są udostępniane zewnętrznym programistom w celu opracowania dodatkowego oprogramowania, które wywołuje taki dodatkowy interfejs API, musisz niezwłocznie opublikować szeroko dokładną specyfikację takiego interfejsu API do bezpłatnego użytku przez wszystkich programistów. Nie możesz tworzyć ani autoryzować swoich licencjobiorców do tworzenia dodatkowych klas, interfejsów,lub podpakiety, które są w jakikolwiek sposób identyfikowane jako „java”, „javax”, „sun” lub podobna konwencja określona przez Sun w dowolnym oznaczeniu konwencji nazewnictwa. ”
źródło
Ten błąd również pojawia się, ale mój projekt jest zbudowany w wierszu poleceń przy użyciu Mavena i kompilatora tycho (jest to zestaw wtyczek OSGi). Po przeszukaniu wielu osób mających ten sam problem, ale naprawieniu go w Eclipse zamiast w wierszu poleceń, znalazłem wiadomość na forum programistów Tycho, która odpowiedziała na moje pytanie, używając konfiguracji w
pom.xml
celu zignorowania ostrzeżenia kompilatora o ograniczeniu dostępu:Więcej informacji można znaleźć w FAQ Tycho . Zajęło mi to WIEK, aby wypracować, więc pomyślałem, że pomogę każdemu, kto spróbuje naprawić te błędy ograniczenia dostępu z wiersza polecenia, publikując tę odpowiedź.
źródło
Windows -> Preferences -> Java Compiler
źródło
Właśnie miałem ten problem. Najwyraźniej na mojej ścieżce kompilacji ustawiłem JRE na 1,5 zamiast 1,6.
źródło
Oprócz rozwiązania Nelsa Beckmana mam następujące wskazówki:
W obszarze Konfiguruj ścieżkę kompilacji musiałem zmienić kolejność wpisów w sekcji Zamów i eksportuj .
Ponadto, jako programista Eclipse PDE, musiałem zmienić kolejność moich zależności
MANIFEST.MF
, dodając problematyczny pakiet jako pierwszy na liście.Grając z tymi tarczami, wraz z uruchomieniem Project> Clean pomiędzy, mogłem rozwiązać te ostrzeżenia.
źródło
dla mnie tak to rozwiązuję:
w Bibliotekach
Uwaga: upewnij się, że w Eclipse / Preferences (NIE w projekcie) / Java / Installed JRE, że jdk wskazuje na folder JDK, a nie JRE C: \ Program Files \ Java \ jdk1.8.0_74
źródło
Przepraszamy za aktualizację starego POST. Otrzymałem zgłoszony problem i rozwiązałem go, jak powiedziano poniżej.
Zakładając, że używasz wtyczki Eclipse + m2e maven, jeśli pojawi się ten błąd ograniczenia dostępu, kliknij prawym przyciskiem myszy projekt / moduł, w którym wystąpił błąd -> Właściwości -> Ścieżka kompilacji -> Biblioteka -> Zastąp JDK / JRE do tego, który jest używany w obszarze roboczym zaćmienia.
Postępowałem zgodnie z powyższymi krokami i problem został rozwiązany.
źródło
W przypadku, gdy masz pewność, że powinieneś mieć dostęp do danej klasy, może to oznaczać, że dodałeś kilka słoików do swojego projektu zawierających klasy o identycznych nazwach (lub ścieżkach), ale o innej treści i wzajemnie się przesłaniają (zazwyczaj stary zwyczaj jar kompilacji zawiera wbudowaną starszą wersję biblioteki innej firmy).
Na przykład po dodaniu słoika implementującego:
ale także starsza wersja implementująca tylko:
Wszystko działa poprawnie w edytorze kodu, ale nie działa podczas kompilacji, jeśli „stara” biblioteka przyćmiewa nową - d2 nagle okazuje się „brakująca lub niedostępna”, nawet gdy jest.
Rozwiązaniem jest sprawdzenie kolejności bibliotek czasu kompilacji i upewnienie się, że ta z poprawną implementacją jest pierwsza.
źródło
Przejdź do ścieżki kompilacji Java we właściwościach projektu. Usuń istniejącą bibliotekę systemową JRE Następnie dodaj ją ponownie, tj. Dodaj bibliotekę -> JRE Lib - wybierz jre ---> Zakończ. Na koniec wybierz kartę zamówienia i eksportu , wybierz JRE Lib i przejdź na górę. Otóż to.
źródło
Wystarczy zmienić kolejność bibliotek ścieżek kompilacji projektu. Kliknij prawym przyciskiem myszy projekt> Ścieżka kompilacji> Konfiguruj ścieżkę kompilacji> Wybierz zamówienie i eksport (karta)> Zmień kolejność wpisów. Mam nadzieję, że przeniesienie „biblioteki systemowej JRE” na dół zadziała. Tak mi się udało. Łatwe i proste .... !!!
źródło
W moim przypadku wystąpiło niedopasowanie między ścieżką kompilacji JRE a zainstalowanym środowiskiem JRE w środowisku wykonawczym. Przeprowadziłem się do Projekt> Właściwości> Kompilator Java. Na dole było ostrzeżenie.
Kliknąłem linki „Zainstalowane środowisko JRE”, „Środowisko wykonawcze”, „Ścieżka kompilacji Java” i zmieniłem wersję JDK na 1.7, a ostrzeżenie zniknęło.
źródło
Dodanie odpowiedniego systemu JRE poprzez ścieżkę kompilacji jest rozwiązaniem, ale twoje zaćmienie może nadal zawierać błąd. Aby rozwiązać ten problem, przejdź do ścieżki kompilacji Java -> Zamów i eksportuj i przenieś bibliotekę systemową JRE na górę. To rozwiązało mój problem.
źródło