gpt4 book ai didi

java - 访问 Jar 中的 PDF

转载 作者:行者123 更新时间:2023-12-01 05:43:06 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com