打开资源文件夹中的pdf文件

Mad*_*ore 2 java executable-jar

我正在尝试使用我的应用程序打开位于资源文件夹中的pdf。它确实可以在模拟器上运行,但是当我尝试导出的应用程序时却没有任何反应。我猜我没有使用正确的路径,但看不到我错了。getRessource方法可以很好地处理我的图像。

这是一个代码片段:

public void openPdf(String pdf){
    if (Desktop.isDesktopSupported()) {
        try {
            URL monUrl  = this.getClass().getResource(pdf);
            File myFile = new File(monUrl.toURI());
            Desktop.getDesktop().open(myFile);


        } catch (IOException ex) {
            // no application registered for PDFs

        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样指的是pdf变量:“ name_of_the_file.pdf”

编辑:我已经粘贴了整个方法

Mad*_*ore 5

好,解决了 该文件位于Jar中,唯一的获取方法是通过inputteam / outstream并创建一个临时文件。

这是我的最终代码,效果很好:

public void openPdf(String pdf){
        if (Desktop.isDesktopSupported())   
        {   
            InputStream jarPdf = getClass().getClassLoader().getResourceAsStream(pdf);

            try {
                File pdfTemp = new File("52502HPA3_ELECTRA_PLUS_Fra.pdf");
                // Extraction du PDF qui se situe dans l'archive
                FileOutputStream fos = new FileOutputStream(pdfTemp);
                while (jarPdf.available() > 0) {
                      fos.write(jarPdf.read());
                }   // while (pdfInJar.available() > 0)
                fos.close();
                // Ouverture du PDF
                Desktop.getDesktop().open(pdfTemp);
            }   // try

            catch (IOException e) {
                System.out.println("erreur : " + e);
            }   // catch (IOException e)
        }
    }
Run Code Online (Sandbox Code Playgroud)