2009-10-04 17 views
6

Este error es raro y no puedo encontrarle mucho sentido. Instalé EclipseRCP 3.5.1, Java SE 1.6 actualización 16 y cambié a SWT 3.5. Creé un nuevo proyecto, configuré las dependencias y traté de compilar. Cuando se trata de importar, utilizar lo siguiente:Eclipse 3.5.1 Error del compilador: El tipo OutputFormat no es accesible debido a la restricción en la biblioteca requerida ../rt.jar

import com.sun.org.apache.xml.internal.serialize.OutputFormat; 
import com.sun.org.apache.xml.internal.serialize.XMLSerializer; 

me sale el error:

Access restriction: The type XMLSerializer is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar. 

ya he Google él, leer algunas respuestas here..and el problema sigue ahí. Lo curioso es que si uso el EclipseRCP anterior (Version: 3.4.2), este problema nunca ocurre. La versión 3.4.2 usa la misma versión de JRE, y acabo de probar la versión de SWT. Funciona bien. Supongo que el problema se basa en algún complemento del nuevo IDE. ¿Algunas ideas?

P.S. Encontré esto article. Pero no me gusta o no quiero cambiar el código si no es necesario. Cuál es la fuente del problema primero, y la solución seguirá ...

Respuesta

10

La configuración predeterminada del compilador Eclipse es demasiado restrictiva. Puede aflojarlo abriendo las preferencias de Java -> Compilador -> Errores/Advertencias y en "API obsoleta y restringida" cambie la configuración de "Referencia prohibida (reglas de acceso)" de error a advertencia o ignorar.

Sin embargo, una pregunta es si realmente desea utilizar las clases en el paquete com.sun., ya que no se garantiza que estén disponibles en una VM de un proveedor diferente o una máquina virtual más nueva de Sun.

+0

Sí, soy consciente de la configuración del eclipse para evitar el problema, pero la misma configuración estaba en la versión anterior de RCP, y no tuve el problema. Nunca escuché eso antes ... así que, ¿por qué ese paquete es com.sun? incluso existe, si no se recomienda su uso? – hypercube

+0

El propósito de las importaciones era leer/escribir archivos XML, ya que entiendo que JDK1.6 tiene analizadores XML integrados. ¿Sugiere que no se puede hacer porque no se debe usar com.sun. *? – hypercube

+0

Es utilizado internamente por las API públicas, probablemente JAXB o algo así. Si necesita las clases directamente, en su lugar debería agregar Apache Xerces-J como biblioteca y usar las clases org.apache.xml.serialize.OutputFormat y org.apache.xml.serialize.XMLSerializer en su lugar. – jarnbjo

1

Solo una nota para cualquier persona que se encuentre con un problema similar y parezca que la configuración de Eclipse no funciona (por ejemplo, hace un momento): compruebe que "Referencia prohibida" no esté configurada como "Error" en configuración específica del proyecto.

1

Estoy publicando en este hilo antiguo solo para referencia para cualquier persona que se encuentre con esto en el futuro.

Tuve el mismo problema pero fue causado porque tenía mi nivel de cumplimiento del compilador establecido en 1.5 mientras usaba el compilador 1.6. Todas las ventajas que se incluyen en 1.6 (como javax.activation y algunas de las capacidades xml mencionadas anteriormente) estarán "restringidas" por el compilador 1.6 si el nivel de cumplimiento se establece en menos de 1.6. Solo tuve que agregar las bibliotecas apropiadas (por ejemplo, activation.jar) para deshacerme del problema en mi caso.

Cuestiones relacionadas