2012-05-03 7 views
16

Hola amigos me enfrenté a una situación muy extraña al crear mi analizador JAXB. Cuando me trató de generar clases JAXB de Eclipse a continuación en una clase que muestra un error muy extraño que esRestricción de acceso en 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 

esto es mi clase

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 { 

Y aquí en esta línea que estoy recibiendo el mensaje de error

privado final estático 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

Posiblemente relacionado: http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar – assylias

+0

Gracias - sería útil para mí :) – khan

Respuesta

37

Este problema se produce cuando la ruta de clase se refiere a JRE en lugar de la JDK en la que el proyecto está abierto en, hacer una cosa vaya a

Build Path > Libraries

Retire el tiempo de ejecución que se incluye y añadir el tiempo de ejecución jdk, debería resolver su problema ahora.

+6

Estaba obteniendo este problema al usar maven-jaxb2-plugin con Maven/JAXB/m2e/Eclipse. Eclipse usaba Java 1.5, por lo que agregué el compilador maven-compiler para configurar mis versiones de origen y destino en 1.7 y las cosas estaban bien. –

+0

Creo que @NathanielWaisbrot es correcto (al menos en algunos casos). Tuve el mismo problema, pero estaba usando el JDK. Configurar el plugin maven para Java 1.7 en lugar de 1.5 cosas arregladas para mí también. – jedison

+0

En java 8, recibí el mismo error al crear instancias com.sun.security.auth.module.NTSystem NTSystem = new com.sun.security.auth.module.NTSystem(); Cambiar el cumplimiento de Java a 1.5 me solucionó el problema. –

-3

Vaya a las propiedades del proyecto y primero quite las bibliotecas actuales de jre y luego vuelva a agregar la biblioteca jre.

11

que tiene el siguiente error: restricción de acceso:

El tipo XmlRegistry no es accesible debido a la restricción de la biblioteca requiere C: \ Archivos de programa (x86) \ Java \ jre7 \ lib \ rt.jar

Ésta es la forma en que me fijo el mismo problema que yo tenía:

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. 

el valor predeterminado trabajó para mí.

0

Esta situación se puede resolver de la siguiente manera:

1 - Ir a la sección compilador de Java del cuadro de diálogo Propiedades del proyecto y luego errores y advertencias. 2 - Marque Habilitar configuraciones específicas del proyecto. 3 - Dentro de la API obsoleta y restringida, cambie la referencia prohibida (regla de acceso) a Advertencia o Ignorar.

4 - Por favor, no me olvides en tu rezar

2

Basta con retirar y volver a añadir la misma biblioteca del sistema JRE.

Nota: asegúrese de hacer clic en 'Aceptar' y cierre el cuadro de diálogo para ambos mientras los elimina y vuelve a agregar.

Cuestiones relacionadas