2016-09-21 3 views
3

Java 9에서는 com.apple.eio.FileManager를 직접 사용할 수 없습니다.Mac에서 Java 9에서 데스크톱 경로를 얻는 방법

public static File getDesktopFolder() throws FileNotFoundException { 
    final int desktopOSType = FileManager.OSTypeToInt("desk"); 
    final String desktopFolderName = FileManager.findFolder(desktopOSType); 
    return new File(desktopFolderName); 
} 

을 다음과 같이 지금까지 나는 바탕 화면을 찾을 수 com.apple.eio.FileManager를 사용하는 자바 (9)의 교체가 있는가, 사용자의 "바탕 화면"경로의 위치를 ​​얻기 위해 맥에 사용했습니다 ? 내 임시 해결책은 the similar Windows-oriented question here에 대한 답변을 사용하는 것입니다

public static File getDesktopFolder() { 
    return new File(System.getProperty("user.home"), "Desktop"); 
} 

그러나이 부서지기 쉬운 것 같다 잠재적으로 특정 로케일 또는 특정 이상하게 구성된 시스템에 버그가.

답변

1

Platform-Specific Desktop Features은 JDK9에서 제거되었습니다. com.apple.eawtcom.apple.eio 패키지

API는 캡슐화 된 , 그래서 당신은 그러나, 그들은 런타임에 계속 액세스 JDK 9에 그들에 대해 컴파일 할 수 있으므로 가 컴파일 기존 코드하지 않습니다 이전 버전이 계속 실행됩니다.

applecom.apple 패키지의 내부 클래스를 사용하는 라이브러리 또는 응용 프로그램과 하위 패키지는 새 API로 마이그레이션해야합니다. 내가 지정한 법적를 필요로하지만, 같은 API 내에서 모든 edit, open, browse 등 스텁을 볼 수 있지만

JEP:272에서 제안 대신으로 코드를 마이그레이션하는 새로운 API는 java.awt.Desktop. 입니다 경로 이름과 그들 중 누구도 워드 프로세서에 따라 하나를 만듭니다.

또한 사용자의 데스크톱에 파일을 만들 때 기존의 방법을 왜곡하고 버그가있는 것으로 생각하는지 잘 모르겠습니다. 당신이

Error:(3, 17) java: package com.apple.eio is not visible (package 
com.apple.eio is declared in module java.desktop, which does not 
export it) 

가있다

와 유사한 오류가 끝낼 수 있습니다 때

return new File(System.getProperty("user.home"), "Desktop"); 

또 다른 방법/일시 해킹, 자바 9 기존 코드의 사용을 만들려면 편집 중에 --add-exports as proposed in Module System을 사용하십시오.

--add-exports java.desktop/com.apple.eio=ALL-UNNAMED 
관련 문제