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

标签 java javafx

我有这段代码:

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();
    }
}

我正在使用 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);

关于java - Java 中的 Desktop.getDesktop.open() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380282/

相关文章:

Ruby 中的 Java 源代码解析器

java - 如何将列表对象放入JSon对象

java - 从字符串中删除特定单词

javafx - TreeTableView 拖放

java - 哪些图像格式可以在 JavaFX 中调整大小

java - 高效的数据结构与算法——自然序列

Java 小程序未正确响应

java - 何时使用 "suppressWhen(...)"或 "filter(...)"?

java - 如何根据 JavaFX 中的条件设置 ListView 单元格的样式

tabs - Javafx:设置Tab助记符