Ograniczenie dostępu do klasy z powodu ograniczenia wymaganej biblioteki rt.jar?

Próbuję skompilować kod Javy 1.4, który został stworzony przez IBM WSDL2Java na Java5 bez odtwarzania stubów i widziałem ten błąd w Eclipse. Jestem przy założeniu, że utworzone stuby powinny być kompilowane tak długo, jak długo dostępne są (są) Jary uruchomieniowe.

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 przypadek, w którym próbuję odepchnąć świnię od kiełbasy? Czy lepiej odtworzyć stuby?

Author: Steen, 2009-05-14

15 answers

Jest inne rozwiązanie, które również działa.

  1. przejdź do ustawień Build Path we właściwościach projektu.
  2. Usuń bibliotekę systemową JRE
  3. dodaj go z powrotem; Wybierz "Dodaj bibliotekę"i wybierz bibliotekę systemową JRE. Domyślność zadziałała.

To działa, ponieważ masz wiele klas w różnych plikach jar. Usunięcie i ponowne dodanie jre lib sprawi, że odpowiednie klasy będą pierwsze. Jeśli chcesz podstawowe rozwiązanie upewnij się, że wykluczasz pliki jar z tymi samymi klasami.

Dla mnie mam: javax.xml.soap.SOAPPart w trzech różnych słoiczkach: axis-saaj-1.4.jar, saaj-api-1.3.jar i rt.jar

 1810
Author: Nels Beckman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-23 21:33:28

Http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html dla mnie zadziałało najlepiej.

W Systemie Windows: Windows - > Preferencje - > Java - > Kompilator - > Błędy/Ostrzeżenia - >Deprecated and restricted API - > Forbidden reference (reguły dostępu): - > change to warning

Na Mac OS X/Linux: Eclipse - > Preferencje - > Java - > kompilator - > błędy/ostrzeżenia - >Przestarzałe i ograniczone API - > zakazane odniesienie (reguły dostępu): - > zmień na warning

 116
Author: scommab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 12:59:34

Spotkałem się z tym samym problemem. Znalazłem odpowiedź na stronie: http://www.17ext.com .
Najpierw usuń biblioteki systemowe JRE. Następnie ponownie zaimportuj biblioteki systemowe JRE.

Nie wiem dlaczego.Jednak to rozwiązało mój problem, mam nadzieję, że może Ci pomóc.

 66
Author: sanwanxian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-20 15:01:59

Domyślam się, że próbujesz zastąpić standardową klasę, która jest dostarczana z Java 5, jedną z biblioteki, którą masz.

Jest to niedozwolone zgodnie z warunkami umowy licencyjnej, jednak AFAIK nie było egzekwowane przed Java 5.

Widziałem to wcześniej z QName i "naprawiłem" to usuwając klasę ze słoika, który miałem.

Edytuj http://www.manpagez.com/man/1/java/ Uwagi dla opcji "- Xbootclasspath: "

" aplikacje korzystające z tej opcji w celu nadpisania klasy w rt.jar nie powinno być wdrożone, ponieważ byłoby to sprzeczne z licencją kodu binarnego Java 2 Runtime Environment."

The http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE

" Ograniczenia Technologii Java. Nie można modyfikować oprogramowania Java Interfejs platformy ("JPI", identyfikowany jako klasy zawarte w ramach pakietu "java" lub dowolnych podpakietów "java" pakiet), tworząc dodatkowe klasy w ramach JPI lub inaczej powodujące dodanie lub modyfikację zajęcia w JPI. W przypadku utworzenia dodatkowa klasa i powiązane API, które (i) rozszerza funkcjonalności platformy Java, oraz (ii) jest narażona do zewnętrznych twórców oprogramowania w celu tworzenie dodatkowego oprogramowania, które wywołuje takie dodatkowe API, należy niezwłocznie opublikować szeroko dokładna Specyfikacja takiego API do bezpłatnego użytku przez wszystkich deweloperzy. Nie możesz tworzyć ani autoryzować swoich Licencjobiorcy do tworzenia, dodatkowych klas, interfejsów lub podpakiety, które są w jakikolwiek sposób identyfikowane jako " java", "javax", " sun " lub podobnej konwencji określonej przez Sun w dowolne oznaczenie konwencji nazewniczej."

 34
Author: Peter Lawrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-07 19:46:12

Ja też dostaję ten błąd, ale mój projekt jest zbudowany w linii poleceń przy użyciu Mavena i kompilatora Tycho (jest to zestaw wtyczek OSGi). Po masach przesiewania ludzi mających ten sam problem, ale naprawiających go w Eclipse, a nie w linii poleceń, znalazłem wiadomość na forum Tycho developer , która odpowiedziała na moje pytanie, używając konfiguracji w pom.xml, Aby zignorować ostrzeżenie kompilatora o ograniczeniu dostępu:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

Więcej informacji można Znalezione w TYCHO FAQ . Zajęło mi to wieki, aby wypracować, więc pomyślałem, że pomogę każdemu, kto próbuje naprawić te błędy ograniczenia dostępu z linii poleceń, publikując tę odpowiedź.

 23
Author: DuffJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-06 12:31:50
  • Przejdź do ustawień ścieżki budowania we właściwościach projektu. Windows -> Preferences -> Java Compiler
  • Usuń bibliotekę systemową JRE
  • Dodaj kolejny JRE z "idealnym dopasowaniem"
  • wyczyść i zbuduj swój projekt na nowo. U mnie zadziałało.
 13
Author: Mayur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-14 21:26:40

Ja też miałem ten problem. Najwyraźniej ustawiłem JRE na 1.5 zamiast 1.6 w mojej ścieżce budowania.

 13
Author: Dorus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-01 09:46:10

Oprócz Rozwiązania Nelsa Beckmana , mam następujące wskazówki:

Pod Configure Build Path , musiałem zmienić kolejność moich wpisów Pod Order i Export.

Dodatkowo, jako programista Eclipse PDE, musiałem zmienić kolejność zależności w moim MANIFEST.MF, dodając problematyczny pakiet jako pierwszy na liście.

Bawiąc się tymi tarczami, wraz z uruchomieniem Project > Clean pomiędzy, udało mi się rozwiązać te ostrzeżenia.

 8
Author: modulitos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:39

Dla mnie tak to rozwiązuję:

  • Przejdź do ścieżki budowania bieżącego projektu

Under Biblioteki

  • Wybierz " Biblioteka systemowa JRE [jdk1. 8xxx] "
  • click edit
  • i wybierz "workspace default JRE (jdk1.8xx)" lub Alternate JRE
  • kliknij Zakończ
  • Kliknij OK

Tutaj wpisz opis obrazka

Uwaga: upewnij się, że w Eclipse / Preferences (nie project) / Java / Zainstalowane JRE, że JDK wskazuje na folder JDK, a nie na JRE C:\Program Files\Java\jdk1.8.0_74

Tutaj wpisz opis obrazka

 7
Author: usertest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-20 18:40:23

Przepraszam za aktualizację starego posta. Mam zgłoszony problem i rozwiązałem go, jak wspomniano poniżej.

Zakładając, że używasz Eclipse + M2E maven plugin, Jeśli pojawi się błąd ograniczenia dostępu, kliknij prawym przyciskiem myszy projekt/moduł, w którym masz błąd --> właściwości --> ścieżka budowania --> Biblioteka --> Zamień JDK/JRE na ten, który jest używany w eclipse workspace.

Wykonałem powyższe kroki i problem został rozwiązany.

 6
Author: Arun B Chandrasekaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-24 10:51:46

W przypadku, gdy jesteś pewien, że powinieneś mieć dostęp do danej klasy, może to oznaczać, że dodałeś do projektu kilka słoików zawierających klasy o identycznych nazwach (lub ścieżkach), ale różnej zawartości i są one przyćmione (zazwyczaj Stary Niestandardowy jar zawiera wbudowaną starszą wersję biblioteki innej firmy).

Na przykład po dodaniu Jaracza:

a.b.c.d1
a.b.c.d2

Ale także starsza wersja implementująca tylko:

a.b.c.d1
(d2 is missing altogether or has restricted access)
Wszystko działa dobrze w edytorze kodu, ale zawodzi podczas kompilacji, jeśli" stara "biblioteka przyćmiewa nową-D2 nagle okazuje się" brakująca lub niedostępna", nawet jeśli tam jest.

Rozwiązaniem jest sprawdzenie kolejności bibliotek kompilowanych i upewnienie się, że pierwsza będzie ta z poprawną implementacją.

 5
Author: Mr. Napik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-01 15:18:17

Przejdź do ścieżki budowania Javy we właściwościach projektu. Usuwanie istniejącej biblioteki systemowej JRE Następnie dodaj go ponownie tzn. Dodaj bibliotekę-- > JRE Lib -- wybierz jre - - - > Zakończ. Na koniec wybierz kartę Zamów i eksportuj Wybierz JRE Lib i przejdź na górę. To wszystko.

 4
Author: Vijay Bhatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-16 11:51:56

Po prostu zmień kolejność bibliotek ścieżek budowania Twojego projektu. Kliknij prawym przyciskiem myszy projekt>buduj ścieżkę > Skonfiguruj buduj ścieżkę>wybierz kolejność i Eksportuj (Tab)>Zmień kolejność wpisów. Mam nadzieję, że przeniesienie "biblioteki systemowej JRE" na dół zadziała. Dla mnie tak. Łatwe i proste....!!!

 3
Author: Samitha Chathuranga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-28 16:57:05

W moim przypadku doszło do niedopasowania między ścieżką kompilacji JRE a zainstalowanym JRE w środowisku wykonawczym. Przeniosłem się do Project > Properties > Java compiler. Na dole był komunikat ostrzegawczy.

Kliknąłem w linki 'Installed JRE', 'Execution environment', 'Java build path' i zmieniłem wersję JDK na 1.7 i Ostrzeżenie zniknęło.

 3
Author: Soumyajit Swain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 09:04:21

Dodanie odpowiedniego systemu JRE poprzez ścieżkę budowania jest rozwiązaniem, ale twój eclipse nadal może mieć błąd. Aby to rozwiązać, przejdź do Java Build path -- > Order and Export and move your JRE system library on the top. To rozwiązało mój problem.

 0
Author: Abhishek Soni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 06:40:31