java - 访问 Jar 中的 PDF

标签 java netbeans menu document

我正在使用 Netbeans 创建 Java 应用程序。我需要从“帮助”菜单项中打开一个 PDF 文件。当我通过 Netbeans 运行应用程序时,文档会打开,但通过 jar 文件打开时,它不会打开。有什么可以做的吗?

m_aboutItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
           Runtime rt = Runtime.getRuntime();
                URL link2=getClass().getResource("/newpkg/Documentation.pdf");
                String link=link2.toString();
                link=link.substring(6);
                System.out.println(link);
                System.out.println(link2);
                String link3="E:/new/build/classes/newpkg/Documentation.pdf";
                try {
                Process proc = rt.exec("rundll32.exe url.dll,FileProtocolHandler " + link3);
            } catch (IOException ex) {
                Logger.getLogger(Menubar1.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    });

两个输出如下:

E:/new/build/classes/newpkg/Documentation.pdf
file:/E:/new/build/classes/newpkg/Documentation.pdf

考虑上面的代码片段。在打印“link”时,我们可以看到它与硬编码的“link3”完全相同。使用硬编码的 'link3' 时,PDF 文件从 jar 应用程序中打开。但是,当我们使用链接时,尽管它与“link3”完全相同,但 PDF 无法打开。

最佳答案

这很可能与 PDF 资源加载不正确有关。在 IDE 中,您可以将 PDF 文件作为项目结构的一部分或直接指定相对路径。当打包的应用程序运行时,它看不到资源。

编辑: 正如我所描述的,您的代码揭示了问题。可以使用下面的方法来正确识别资源路径。

public static URL getURL(final String pathAndFileName) {
    return Thread.currentThread().getContextClassLoader().getResource(pathAndFileName);
}

请引用this问题,这可能会提供更多信息。

关于java - 访问 Jar 中的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624993/

相关文章:

java - OnTouchListener() 只会在按下并按住按钮时执行一次

java - affablebean -with AngularJS 无法使用 netbeans 实现

css - 创建动态菜单

Javascript 切换菜单意外显示

menu - WordPress 中导航菜单的自定义

java - Java中的条形码生成

java - 是具有预定义容量的 HashMap 更快

java - JTable 关键监听器

java - 为什么 Netbeans 提示同步调用被条件包裹?

java - 如何在我的应用程序中使用 Scene Builder Dark Theme