2011-09-02 114 views
0

我已经做了Swing应用程序,将包括一个文件,help.pdf在.jar文件。当用户从JMenuItem中选择Help->User Guide时,它应该在系统的默认PDF查看器中加载该文件。如何从.jar文件加载PDF?

我的代码加载PDF,

private void openHelp() { 
    try { 
     java.net.URL helpFile = getClass().getClassLoader().getResource("help.pdf"); 
     File pdfFile = new File(helpFile.getPath()); 
     if (pdfFile.exists()) { 

      if (Desktop.isDesktopSupported()) { 
       Desktop.getDesktop().open(pdfFile); 
      } else { 
       System.out.println("Awt Desktop is not supported!"); 
      } 

     } else { 
      System.out.println("File does not exist!"); 
     } 

     System.out.println("Done"); 

    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

} 

这工作在Eclipse IDE,但是,当我打包成它不再适用其他人一个罐子。

我该如何解决这个问题?

回答

1

的问题是File不能说出一个JAR文件的组成部分。你需要做的是将资源从JAR文件复制到文件系统中的临时文件,并使用File临时文件打开。

0

.jar文件中的文件名是区分大小写。在你的文字你写Help.pdf但在你的代码使用help.pdf。 Java代码中的大写/小写必须与文件的大小写匹配,即使您使用的是文件系统不区分大小写的系统。

尝试

getResource("Help.pdf"); 

代替(假设你的帖子文字的文件名是正确的)

+0

我只是搞砸了文件名,它是help.pdf – jax

+0

然后你需要更精确地说明什么“不再有效”意思是 –

0

我认为你必须获取的jar的位置,打开它,并从内加载PDF文件的应用。 .jar文件只是一个压缩文档,它可以用java轻松读取...

+0

这里不是问题。请参阅斯蒂芬C的回答,了解处理这种情况的正确方法。 –

+1

刚刚得知自己:) – Tobson