Eclipse는 JDK 10 이후의 XML 클래스를 찾을 수 없습니다. 빌드 경로 전환: 해결 방법
Maven 프로젝트의 빌드 경로를 JDK 10으로 전환하려고 할 때 Eclipse 내에서 사용자는 Eclipse 빌드 프로세스가 javax.xml.xpath.XPath를 포함한 XML 관련 클래스를 찾지 못하는 문제에 직면할 수 있습니다. org.w3c.dom.Document 및 org.xml.sax.SAXException. 이러한 어려움은 주로 xml-apis-1.4.01 종속성에서 파생된 클래스에 영향을 미칩니다.
근본 원인
이 동작은 프로젝트가 Java 1.8에서 Java로 전환될 때 트리거됩니다. 10 module-info.java 파일을 사용하여 모듈로 명시적으로 선언되지 않았습니다. 이는 프로젝트의 코드가 명명되지 않은 모듈에서 컴파일된다는 것을 의미합니다. 이 모듈은 이러한 문제가 있는 패키지를 내보내는 JRE 시스템 라이브러리의 java.xml을 포함하여 명명된 명명된 모듈과 명명되지 않은 모듈을 모두 볼 수 있습니다.
추가로 xml- 클래스 경로의 apis.java는 이와 동일한 패키지의 또 다른 세트를 제공합니다. 그러나 이러한 패키지는 이름이 지정되지 않은 모듈과 연결되어 JLS §7.4.3에 정의된 "고유한 가시성" 요구 사항을 위반하게 됩니다. 결과적으로 프로그램은 무효화되고 컴파일러로부터 거부됩니다.
해결책
이 문제를 해결하려면 다음 세 가지 접근 방식 중 하나를 채택할 수 있습니다.
(1) 프로젝트를 모듈로 선언
프로젝트 내에 module-info.java 파일을 도입하고, 프로젝트는 "requires" 키워드를 사용하여 읽어야 하는 특정 모듈을 읽어야 합니다. 이 접근 방식은 어떤 패키지를 가져왔는지 명시적으로 지정하여 고유한 가시성을 보장합니다.
(2) 관찰 가능한 모듈 제한
프로젝트를 모듈로 변환하지 않고도 제외할 수 있습니다. 관찰 가능한 모듈 세트의 java.xml. Eclipse에서는 "Contents" 탭 아래의 "Modularity Details" 대화 상자를 통해 이를 수행할 수 있습니다. java.base를 제외한 대부분의 모듈을 "사용 가능한 모듈" 열에 푸시하고 필수 모듈을 선택적으로 다시 추가해야 할 수도 있습니다.
(3) java.xml 제외(JDK 버그)
이 접근 방식은 불법적인 상황이 컴파일을 통과하도록 허용하는 javac의 버그를 이용하므로 덜 권장됩니다. java.xml을 빌드 경로의 끝으로 이동하면 이름이 지정되지 않은 모듈에서 효과적으로 숨길 수 있습니다. 그러나 이는 예상치 못한 동작으로 이어질 수 있으며 장기적으로 신뢰할 수 있는 해결책이 아닙니다.
결론적으로 Eclipse에서 JDK 10으로 전환할 때 XML 관련 클래스를 찾을 수 없는 문제는 고유한 가시성 요구 사항. 프로젝트를 모듈화하거나 관찰 가능한 모듈을 제한하면 문제가 해결됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3