Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mac上获取Java 9中的桌面路径_Java_Macos_Java 9 - Fatal编程技术网

如何在Mac上获取Java 9中的桌面路径

如何在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

Java 9阻止直接使用com.apple.eio.FileManager。到目前为止,我已经在Mac上使用它来获取用户“桌面”路径的位置,如下所示

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