gpt4 book ai didi

java - Maven 构建后无法打开 PDF

转载 作者:行者123 更新时间:2023-11-30 03:14:54 25 4
gpt4 key购买 nike

我有一个 Java 应用程序和一本用户手册,可供用户使用,这是我的程序的资源。

我的项目是用 Maven 构建的,我有几个项目。在我的 GUI 项目中,我的 userManual.pdf 位于以下路径中:src\main\resources\userManual\userManual.pdf

在 Eclipse IDE 下,我运行我的主项目,当我单击用户手册按钮时,PDF 文件将被打开。但是当我构建项目时,选项 Pane 中出现内部运行时错误:发生内部错误(文件:.\userManual\userManual.pdf 不存在。)。该应用程序很可能处于不适当的状态,因此 nox 会退出。

我的代码:

File manual = new File(ManualBar.class.getClassLoader().getResource("./userManual/userManual.pdf").getPath());

try {
Desktop.getDesktop().open(manual);
} catch (IOException e1) {
JOptionPane.showInputDialog(null,
"The user manual is not available",
"User manual is missing",
JOptionPane.INFORMATION_MESSAGE);
}

我认为我没有正确调用我的资源,或者它没有到达正确的位置。

最佳答案

您无法将 jar 内的资源作为 File 实例进行访问。它可以在 IDE 中工作,因为 Eclipse 将所有内容解压到临时文件夹中,因此资源是文件系统中的实际文件。但是,当打包在 jar 中时,它就不再是 File 了。

Desktop.open方法需要一个 File 对象,您需要获取资源的 InputStream,将其复制到临时文件夹中的 File 并打开该新文件文件。

使用 Java 7,可以写成:

Path tempFile = Files.createTempFile(null, ".pdf");
try (InputStream is = getClass().getResourceAsStream("/userManual/userManual.pdf")) {
Files.copy(is, tempFile, StandardCopyOption.REPLACE_EXISTING);
}
Desktop.getDesktop().open(tempFile.toFile());

关于java - Maven 构建后无法打开 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883152/

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