"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o Eclipse não consegue encontrar minhas classes XML após mudar para o JDK 10?

Por que o Eclipse não consegue encontrar minhas classes XML após mudar para o JDK 10?

Publicado em 2024-12-22
Navegar:124

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

Eclipse não é possível localizar classes XML após a transição do caminho de construção do JDK 10: resolução

Ao tentar mudar o caminho de construção de um projeto Maven para JDK 10 no Eclipse, os usuários podem encontrar um problema em que os processos de construção do Eclipse não conseguem localizar classes relacionadas a XML, incluindo javax.xml.xpath.XPath, org.w3c.dom.Document e org.xml.sax.SAXException. Essas dificuldades afetam principalmente as classes derivadas da dependência xml-apis-1.4.01.

Causa raiz

O comportamento é acionado quando um projeto faz a transição de Java 1.8 para Java 10 sem ser explicitamente declarado como um módulo usando um arquivo module-info.java. Isso significa que o código do projeto é compilado no módulo sem nome, que tem visibilidade total dos módulos nomeados e sem nome, incluindo java.xml da Biblioteca do Sistema JRE, que exporta esses pacotes problemáticos.

Além disso, xml- apis.java no classpath fornece outro conjunto desses mesmos pacotes. No entanto, estes pacotes estão associados ao módulo sem nome, levando a uma violação do requisito de "visibilidade única", conforme definido em JLS §7.4.3. Consequentemente, o programa se torna inválido e enfrenta rejeição dos compiladores.

Solução

Para resolver esse problema, uma das três abordagens pode ser adotada:

(1) Declarar o projeto como um módulo

Introduza um arquivo module-info.java dentro do projeto, definindo quais módulos específicos o projeto deve ler através do uso do palavra-chave "requer". Essa abordagem garante visibilidade única, declarando explicitamente quais pacotes são importados.

(2) Limitar módulos observáveis

Sem converter o projeto em um módulo, é possível excluir java.xml do conjunto de módulos observáveis. No Eclipse, isso pode ser feito através da caixa de diálogo "Detalhes de modularidade", na guia "Conteúdo". Pode ser necessário separar a maioria dos módulos de java.base para a coluna "Módulos disponíveis" e adicionar novamente seletivamente os essenciais.

(3) Excluir java.xml (Bug JDK)

Essa abordagem é menos recomendada, pois tira vantagem de um bug no javac que permite que a situação ilegal passe na compilação. Ao mover java.xml para o final do caminho de construção, ele pode ser efetivamente ocultado do módulo sem nome. No entanto, isso pode levar a um comportamento inesperado e não é uma solução confiável a longo prazo.

Concluindo, o problema de classe não encontrada relacionado ao XML ao mudar para o JDK 10 no Eclipse é causado por uma violação do requisito único de visibilidade. O problema é resolvido modularizando o projeto ou limitando os módulos observáveis.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3