Java中的Desktop.getDesktop.open()失败

Java中的Desktop.getDesktop.open()失败,java,javafx,Java,Javafx,我有一段代码: public void openSelectedFiles(MouseEvent mouseEvent){ ListView<String> listView = (ListView<String>) ((Node) mouseEvent.getSource()) .getScene().lookup("#listOfReferenceFiles"); String selectedFileString = listVi

我有一段代码:

public void openSelectedFiles(MouseEvent mouseEvent){
    ListView<String> listView = (ListView<String>) ((Node) mouseEvent.getSource())
        .getScene().lookup("#listOfReferenceFiles");

    String selectedFileString =  listView.getSelectionModel().getSelectedItem();
    System.out.println(Desktop.isDesktopSupported());
    File fileToOpen = new File(selectedFileString);
    System.out.println(fileToOpen.exists());

    try {
        Desktop.getDesktop().open(fileToOpen);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public void openSelectedFiles(MouseEvent MouseEvent){
ListView ListView=(ListView)((节点)mouseEvent.getSource()
.getScene().lookup(“#引用列表”);
String selectedFileString=listView.getSelectionModel().getSelectedItem();
System.out.println(Desktop.isDesktopSupported());
File fileToOpen=新文件(selectedFileString);
System.out.println(fileToOpen.exists());
试一试{
Desktop.getDesktop().open(fileToOpen);
}捕获(IOE异常){
e、 printStackTrace();
}
}
我正在使用Java 8,它似乎正在工作,直到这一行:

Desktop.getDesktop().open(fileToOpen)


它不会抛出异常,只是冻结了我的应用程序。这是一个错误吗?

您必须首先检查是否允许使用桌面以及文件是否存在,以避免此类问题:

//first check if Desktop is supported by Platform or not
if(!Desktop.isDesktopSupported()){
    System.out.println("Desktop is not supported");
    return;
}

Desktop desktop = Desktop.getDesktop();

// after check if file exists and open it
if(file.exists()) desktop.open(file);

您必须首先检查是否允许使用桌面以及文件是否存在,以避免此类问题:

//first check if Desktop is supported by Platform or not
if(!Desktop.isDesktopSupported()){
    System.out.println("Desktop is not supported");
    return;
}

Desktop desktop = Desktop.getDesktop();

// after check if file exists and open it
if(file.exists()) desktop.open(file);

文件
fileToOpen
存在?如果System.out.println(Desktop.isDesktopSupported())打印为true,我会回答是。是的,它们打印为true,并且文件存在/您在什么平台(操作系统和JRE版本)上运行此操作?文件
fileToOpen
存在?如果System.out.println,我会回答是(Desktop.isDesktopSupported())打印为true。是的,它们打印为true,并且文件存在/您在哪个平台(操作系统和JRE版本)上运行此操作?尝试了。复制了完全相同的代码。没有。我得到了相同的数据。复制了完全相同的代码。没有。我得到了相同的数据