打开打包在JAR中的PDF文件

时间:2014-05-15 18:03:20

标签: 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与它在的时间位于同一个文件夹中蚀。

2 个答案:

答案 0 :(得分:0)

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

从根本上说,File类适用于文件系统上的文件。您不能使用它来表示JAR或其他存档中的文件。您将不得不将文件从jar中复制到常规文件中,然后创建引用此新文件的File。要从广告文件中读取该文件,您可以将JarURLConnection.getInputStream与您拥有的网址一起使用,也可以拨打ClassLoader.getResourceAsStream

答案 1 :(得分:0)

尝试一下:

使用MethodHandles.lookup().lookupClass().getClassLoader()

时,请确保pdf文件的路径为相对路径
InputStream is = MethodHandles.lookup().lookupClass().getClassLoader().getResourceAsStream("doc/example.pdf");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((thisLine = br.readLine()) != null) {
            System.out.println(thisLine);
         }