2017-03-23 20 views
5

구성 요소 세부 사항 - 하게 IntelliJ IDEA 2017.1 CE를 사용JDK-9 개 + 154의 RuntimeException : 모듈 jrt.fs의 패키지 jdk.internal.jimage.decompressor 및 모듈 java.base

주() -

Set<String> set2 = Set.of("a", "b", "c"); 
set2.forEach(System.out::println); 

module-info.java

,
module collection { 
    requires java.base; 
} 

로그을 - VM의 초기화의 구현을 통해

Error occurred during initialization of VM 
java.lang.RuntimeException: Package jdk.internal.jimage.decompressor in both module jrt.fs and module java.base 
    at jdk.internal.module.ModuleBootstrap.fail([email protected]/ModuleBootstrap.java:699) 
    at jdk.internal.module.ModuleBootstrap.boot([email protected]/ModuleBootstrap.java:329) 
    at java.lang.System.initPhase2([email protected]/System.java:1928) 

의문은 내 질문에 내가 모듈 jrt.fs를 포함하지 않은 것입니다 - 그것은 어디에서 사진에오고있다? 이러한 모듈 포함/제외를 어떻게 디버깅합니까? 현재 예외를 어떻게 해결할 수 있습니까?

+1

정말 이상합니다. 나는'jrt.fs'에 대해 들어 본 적이 없습니다. 어떤 JDK 버전 (빌드 번호?)을 실행하고 있습니까? 또한,'java --list-modules'을 사용하여 모듈을 찾으십시오. – Nicolai

+0

@Nicolai 현재'jdk-9-ea + 154 '를 사용 중입니다. 모듈의 세부 사항을 살펴볼 것입니다.'jrt.fs'가 무엇을 위해 사용되는지에 대한 아이디어가 있습니까? 알아가는 데 도움이 될 수 있습니다. – nullpointer

답변

5

$ JAVA_HOME/lib/jrt-fs.jar에는 JDK 8로 컴파일 된 "jrt"파일 시스템 공급자의 사본이 들어 있습니다. JDK 8에서 실행되지만 JDK 9 런타임 이미지에 액세스해야하는 IDE.

예외적으로이 JAR 파일 또는 $ JAVA_HOME/lib가 모듈 경로에 잘못 입력 된 것처럼 보입니다. 최상위 디렉토리의 module-info.class를 포함하지 않는 JAR 파일은 자동 모듈로 취급되므로 예외에는 메시지에 "module jrt.fs"가 있습니다. 예외는 기본적으로 모듈 경로에 jrt-fs.jar를 넣음으로써 jdk.internal.jimage.decompressor 패키지 (및 기타 많은 패키지)를 포함하는 두 개의 모듈로 끝났음을 의미합니다.

2

jdk9 디렉토리에서 jrt-fs.jar을 제거하십시오. 필자는 IntelliJ IDEA의 프로젝트 구조에서이 작업을 수행했습니다.

+0

나를 위해 일해도 ... FileSystem 모듈 jrt.fs.가 누락되어 클래스 로더에서 리소스를로드 할 수 없지만 공정하게하기 위해, 아직 다른 Java 9 환경에서 문제가되는 코드가 작동하는지 아직 확인하지 않았습니다 (8 이하가 정확함). – Ajax