如何在Mac上获取Java 9中的桌面路径
Java 9阻止直接使用com.apple.eio.FileManager。到目前为止,我已经在Mac上使用它来获取用户“桌面”路径的位置,如下所示如何在Mac上获取Java 9中的桌面路径,java,macos,java-9,Java,Macos,Java 9,Java 9阻止直接使用com.apple.eio.FileManager。到目前为止,我已经在Mac上使用它来获取用户“桌面”路径的位置,如下所示 public static File getDesktopFolder() throws FileNotFoundException { final int desktopOSType = FileManager.OSTypeToInt("desk"); final String desktopFolderName = FileMa
public static File getDesktopFolder() throws FileNotFoundException {
final int desktopOSType = FileManager.OSTypeToInt("desk");
final String desktopFolderName = FileManager.findFolder(desktopOSType);
return new File(desktopFolderName);
}
Java 9中是否有替代品可用于使用com.apple.eio.FileManager查找桌面?我的临时解决方案是使用以下答案:
但是,在某些地区或某些配置奇怪的系统上,这似乎很脆弱,并且可能存在错误。已在JDK9中删除
com.apple.eawt
和com.apple.eio
包中的API是
封装,因此您将无法在JDK9中针对它们进行编译。
但是,它们在运行时仍然是可访问的,因此现有代码
编译为旧版本的程序将继续运行
最终,使用apple
和com.apple
包及其子包需要迁移到新的API
新的API将迁移代码,而不是像中建议的那样
虽然我可以在同一个API中看到edit
、open
、browse
等存根,但它们都需要合法的指定路径名,并且没有一个根据文档创建路径名
另外,我也不太清楚为什么你会发现现有的方法对于在用户桌面上创建文件来说既脆弱又有缺陷
return new File(System.getProperty("user.home"), "Desktop");
另一种方法/临时黑客利用Java 9中的现有代码,当您最终可能遇到类似以下错误时 是在编译过程中使用的
--add-exports java.desktop/com.apple.eio=ALL-UNNAMED
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)
--add-exports java.desktop/com.apple.eio=ALL-UNNAMED