java - 打开打包在 JAR 中的 PDF 文件

标签 java eclipse pdf jar

我正在尝试打开一个在运行时打包到 jar 文件中的 PDF 文件。基本思想是用户单击帮助选项,然后它会显示 PDF 形式的帮助文件。现在我在 linefit 包的 LineFit.class 中有这个来尝试打开帮助 PDF:

try {
  File test = new File(LineFit.class.getClass().getResource("/linefit/helpTest.pdf").toURI());
  try {
      Desktop.getDesktop().open(test);
  } catch (IOException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
  } 
} catch (URISyntaxException e2) {
  // TODO Auto-generated catch block
  e2.printStackTrace();
}

当我运行它时,它可以在 Eclipse 中运行,但是如果我尝试将其导出到可运行的 JAR 文件,它不会打开 PDF 文件,并且当我查看 JAR 时,PDF 与在 Eclipse 中时位于同一文件夹中。

最佳答案

new File(URI) 仅适用于 file: URI。当类加载器在 jar 中找到资源时,它会返回 jar URI,例如 jar:file:/C:/Program%20Files/test.jar!/foo/bar

从根本上来说,File 类用于文件系统上的文件。您不能使用它来表示 JAR 或其他存档中的文件。您必须将文件从 jar 中复制到常规文件中,然后创建一个引用此新文件的 File 。要从 jar 中读取文件,您可以使用 JarURLConnection.getInputStream使用您拥有的 URL,或者您可以调用 ClassLoader.getResourceAsStream .

关于java - 打开打包在 JAR 中的 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23685567/

相关文章:

Excel:导出为 PDF 不更新

pdf - 将 Foxit PDF Reader 嵌入网页

java - 令人困惑 "override a private method"

java - 在java中为八 channel 声卡选择输出行

java - 无法理解 Math.min(0,-0) 的输出

java - 如何在 Eclipse 中写入 "Error log"部分?

java - 线程池 "mapped"如何在 Spring 中执行?

java - 使用 Assets 文件夹(本地)进行简单的json解析

java - 运行时构建失败 "mvn clean install"

pdf - 图像文件到 PDF 流转换