2012-05-03 12 views
16

Witam, miałem bardzo dziwny sposób tworzenia mojego parsera JAXB. Kiedy próbowałem do generowania klas JAXB z zaćmienia następnie w jednej klasie to pokazuje bardzo dziwny błąd, który jestOgraniczenia dostępu dla jdk1.7/jre/lib/rt.jar

Access restriction: The type QName is not accessible due to restriction on required library /usr/lib/jvm/jdk1.7.0_02/jre/lib/rt.jar 

to moja klasa

package generated; 

import javax.xml.bind.JAXBElement; 
import javax.xml.bind.annotation.XmlElementDecl; 
import javax.xml.bind.annotation.XmlRegistry; 
//import javax.xml.namespace.QName; 
import javax.xml.namespace.*; 


@XmlRegistry 
public class ObjectFactory { 

a tu na tej linii otrzymuję komunikat o błędzie

prywatny ostateczny statyczny QName _ExpenseReport_QNAME = new QName ("", "expenseReport");

/** 
    * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: generated 
    * 
    */ 
    public ObjectFactory() { 
    } 

    /** 
    * Create an instance of {@link ExpenseT } 
    * 
    */ 
    public ExpenseT createExpenseT() { 
     return new ExpenseT(); 
    } 

    /** 
    * Create an instance of {@link UserT } 
    * 
    */ 
    public UserT createUserT() { 
     return new UserT(); 
    } 

    /** 
    * Create an instance of {@link ItemT } 
    * 
    */ 
    public ItemT createItemT() { 
     return new ItemT(); 
    } 

    /** 
    * Create an instance of {@link ItemListT } 
    * 
    */ 
    public ItemListT createItemListT() { 
     return new ItemListT(); 
    } 

    /** 
    * Create an instance of {@link JAXBElement }{@code <}{@link ExpenseT }{@code >}} 
    * 
    */ 
    @XmlElementDecl(namespace = "", name = "expenseReport") 
    public JAXBElement<ExpenseT> createExpenseReport(ExpenseT value) { 
     return new JAXBElement<ExpenseT>(_ExpenseReport_QNAME, ExpenseT.class, null, value); 
    } 

} 
+2

Prawdopodobnie powiązane: http://stackoverflow.com/questions/860187/access-restriction-on-clue-due-to-restriction-on-lub-library-rt-jar – assylias

+0

Dzięki - byłoby to pomocne dla mnie :) – khan

Odpowiedz

37

Ten problem występuje, gdy klasa ścieżka odnosi się do JRE zamiast JDK w którym projekt jest otwarty na wykonaj jedną rzeczą iść do

Build Path > Libraries

Usuń Runtime, który jest dołączony i dodać środowisko wykonawcze jdk powinno teraz rozwiązać Twój problem.

+6

Otrzymałem ten problem podczas korzystania z wtyczki maven-jaxb2 z Maven/JAXB/m2e/Eclipse. Eclipse korzystał z wersji Java 1.5, więc dodałem wtyczkę maven-compiler, aby ustawić wersje źródłowe i docelowe na 1.7, a rzeczy były dobre. –

+0

Myślę, że @ Nataniel Waisbrot jest poprawny (przynajmniej w niektórych przypadkach). Miałem ten sam problem, ale używał JDK. Skonfigurowanie wtyczki maven dla Javy 1.7, a nie 1.5, naprawiło również dla mnie. – jedison

+0

W java 8 wystąpił ten sam błąd podczas tworzenia pliku com.sun.security.auth.module.NTSystem NTSystem = new com.sun.security.auth.module.NTSystem(); Zmiana zgodności z Java na 1.5 spowodowała usunięcie problemu. –

-3

Przejdź do właściwości projektu i najpierw usuń bieżące biblioteki jre, następnie dodaj bibliotekę jre z powrotem.

11

mam kolejny błąd: ograniczenie dostępu:

Typ XmlRegistry nie jest dostępny ze względu na ograniczenia w wymaganej biblioteki C: \ Program Files (x86) \ Java \ jre7 \ lib \ rt.jar

ten sposób, że naprawiłem ten sam problem, który miałem:

1.Go to the Build Path settings in the project properties. (Right click on your application, then in the popout window you will see 'Build Path', slide right and click on 'Configure Build Path...') 
2.Remove the JRE System Library 
3.Add it back; Select "Add Library" and select the JRE System Library. 

domyślna pracował dla mnie.

0

Sytuacja ta może być rozwiązany w następujący sposób:

1 - Idź do sekcji Java Compiler w oknie Właściwości projektu, a następnie błędów i ostrzeżeń. 2 - Zaznacz opcję Włącz konkretne ustawienia projektu. 3 - Wewnątrz przestarzałego i ograniczonego interfejsu API zmień zabronione odniesienie (reguła dostępu) na Ostrzeżenie lub Ignoruj.

4 - Proszę, nie zapomnij o mnie w swoim modlić

2

prostu usunąć i ponownie dodać tę samą bibliotekę systemową JRE.

Uwaga: Pamiętaj o kliknięciu przycisku "OK" i zamknij okno dialogowe zarówno podczas usuwania, jak i ponownego dodawania.