"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué Eclipse no puede encontrar mis clases XML después de cambiar a JDK 10?

¿Por qué Eclipse no puede encontrar mis clases XML después de cambiar a JDK 10?

Publicado el 2024-12-22
Navegar:550

Why Can\'t Eclipse Find My XML Classes After Switching to JDK 10?

Eclipse no puede ubicar clases XML después de la transición de ruta de compilación de JDK 10: resolución

Al intentar cambiar la ruta de compilación de un proyecto Maven a JDK 10 Dentro de Eclipse, los usuarios pueden encontrar un problema en el que los procesos de compilación de Eclipse no logran localizar clases relacionadas con XML, incluido javax.xml.xpath.XPath. org.w3c.dom.Document y org.xml.sax.SAXException. Estas dificultades afectan principalmente a las clases derivadas de la dependencia xml-apis-1.4.01.

Causa raíz

El comportamiento se activa cuando un proyecto realiza la transición de Java 1.8 a Java 10 sin ser declarado explícitamente como un módulo usando un archivo module-info.java. Esto significa que el código del proyecto se compila en el módulo sin nombre, que tiene visibilidad completa de los módulos con nombre y sin nombre, incluido java.xml de la biblioteca del sistema JRE, que exporta estos paquetes problemáticos.

Además, xml- apis.java en el classpath proporciona otro conjunto de estos mismos paquetes. Sin embargo, estos paquetes están asociados con el módulo sin nombre, lo que genera una violación del requisito de "visibilidad única" tal como se define en JLS §7.4.3. En consecuencia, el programa deja de ser válido y enfrenta el rechazo de los compiladores.

Solución

Para resolver este problema, se puede adoptar uno de tres enfoques:

(1) Declarar proyecto como módulo

Introduzca un archivo module-info.java dentro del proyecto, definiendo qué módulos específicos debe leer el proyecto durante el uso de la palabra clave "requiere". Este enfoque garantiza una visibilidad única al indicar explícitamente qué paquetes se importan.

(2) Limitar módulos observables

Sin convertir el proyecto en un módulo, es posible excluirlo java.xml del conjunto de módulos observables. En Eclipse, esto se puede lograr a través del cuadro de diálogo "Detalles de modularidad", en la pestaña "Contenido". Puede que sea necesario enviar la mayoría de los módulos aparte de java.base a la columna "Módulos disponibles" y volver a agregar selectivamente los esenciales.

(3) Excluir java.xml (error JDK)

Este enfoque es menos recomendado, ya que aprovecha un error en javac que permite que la situación ilegal pase la compilación. Al mover java.xml al final de la ruta de compilación, se puede ocultar de manera efectiva del módulo sin nombre. Sin embargo, esto puede provocar un comportamiento inesperado y no es una solución confiable a largo plazo.

En conclusión, el problema de clase no encontrada relacionada con XML al cambiar a JDK 10 en Eclipse se debe a una violación de la requisito de visibilidad único. El problema se resuelve modularizando el proyecto o limitando los módulos observables.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3