2017-11-20 15 views
1

Java 9 (HTTP/2 클라이언트 용)를 Java 9로 전환하고 있지만 Java 9 모듈화를 사용하지 않을 계획입니다.Java 9가 액세스 할 수없는 패키지에 대해 불평하지 않게하는 방법이 있습니까?

액세스 할 수없는 패키지에 대해 많은 수의 컴파일러 오류가 발생합니다. 각각은 나를 --add-exports modulename/packagename=ALL-UNNAMED 컴파일러 플래그를 추가해야합니다.

지정할 수있는 컴파일러 플래그가 있습니까? 한 번에 모든 내보내기를 추가하고 더 이상 컴파일러 오류가 발생하지 않습니까?

package com.prosc.fx; 

import com.sun.javafx.stage.WindowHelper; 

public class CompilerFlagTest { 
    public static void main(String[] args) { 
     WindowHelper.getWindowAccessor(); 
    } 
} 

오류 메시지는 다음과 같습니다 : 당신이 언급

Error:(3, 22) java: package com.sun.javafx.stage is not visible (package com.sun.javafx.stage is declared in module javafx.graphics, which does not export it to the unnamed module)

+2

예제를 포함하도록 질문을 확장 할 수 있습니까? 추측하면 JDK 내부 클래스에 대한 참조로 코드를 컴파일하려고합니다. –

+0

편집 된 질문은 예제를 보여줍니다. 대부분의 클래스는 sun. * 및 com.sun. * 패키지에 있습니다. –

+2

해당 클래스를 사용하지 마십시오 : 개인 패키지에 있습니다. 비공개 API가 아닌 공개 API를 사용하십시오. https://docs.oracle.com/javase/9/docs/api/javafx.graphics-summary.html –

답변

5

클래스와 패키지 개인 패키지, 사다리에 새로운 표시 수준에

는 여기에 문제를 보여주는 예제 코드이다. 전체 모듈화가 필수적이며 선택 사항이 아니므로 액세스 할 수 없다는 것을 의미합니다. 모듈화를 사용하지 않더라도 모듈화를 사용하고 있습니다.

자신에게 유리하게 공개 API를 사용하십시오.

+1

당신이 말하고자하는 옵션은'--illegal-access'입니다, ** ** --add-exports가 아닙니다. 내가 아는 바로는 후자가 여기있다. – Nicolai

+0

@Nicolai 내 잘못, 나는 그 비트를 제거. 감사! –