我正在尝试打开一个在运行时打包到 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/