PDF文件无法在JAR中打开

时间:2015-12-22 01:22:21

标签: java pdf netbeans jar stream

我在点击按钮时尝试打开PDF文件。但是,当我将程序作为JAR运行时,我似乎无法正常工作。

最初,我使用的是这段代码:

    if(Desktop.isDesktopSupported())
    {
        try
        {
            File myFile = new File("src/1. Handel - And the Glory of the Lord.pdf");
            Desktop.getDesktop().open(myFile);
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null,e);
        }
    }

这对Netbeans起了作用,但它并没有对JAR起作用。经过研究,我发现了它,因为我需要使用流打开它。意思是我必须将它作为流复制,并将该副本作为文件打开。在查看堆栈溢出后,我现在使用此代码:

    try {
        String inputPdf = "src/1. Handel - And the Glory of the Lord.pdf";
        InputStream manualAsStream = getClass().getClassLoader().getResourceAsStream(inputPdf);

        Path tempOutput = Files.createTempFile("1. Handel - And the Glory of the Lord", ".pdf");
        tempOutput.toFile().deleteOnExit();

        Files.copy(manualAsStream, tempOutput, StandardCopyOption.REPLACE_EXISTING);

        File file = new File (tempOutput.toFile().getPath());
        if (file.exists())
        {
            Desktop.getDesktop().open(file);
        }
        } catch (IOException ex) {
        Logger.getLogger(HandelNotes.class.getName()).log(Level.SEVERE, null, ex);
    }

这甚至不适用于Netbeans,而在Stack Exchange上的另一个线程上,用户表示它适用于他们。

我收到了一行java.lang.NullPointerException错误:

Files.copy(manualAsStream, tempOutput, StandardCopyOption.REPLACE_EXISTING);

有谁知道出了什么问题,有人可以告诉我如何纠正我的代码吗?

谢谢, 罗汉

0 个答案:

没有答案