如何在Java中打开具有不同路径的pdf文件

时间:2013-03-10 08:56:34

标签: java netbeans-7

我有一个PDF文件,我想用我的java应用程序打开它。当我使用Netbeans运行该程序时,PDF文件打开。但是当我从.Jar文件运行该程序时,该PDF文件没有打开。

    try {
            String p1[] = getClass().getResource("/Scholars_Management_System_Help.pdf").toString().split("file:/");
            String helppath = p1[1].replace("%20", " ");
            Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + helppath);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
            Logger.getLogger(Home.class.getName()).log(Level.SEVERE, null, ex);
        }

3 个答案:

答案 0 :(得分:3)

我认为getClass().getResource("/Scholars_Management_System_Help.pdf")在项目根目录中找到一个名为Scholars_Management_System_Help.pdf的文件,当你创建jar文件时,这个文件可能不包含在jar中,这就是为什么它不起作用。您应该从命令行运行jar,以便查看是否有任何异常抛出。这样你就可以确定问题的原因了。

再次使用Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + helppath);而不是使用Desktop.getDesktop().open(file_name);运行应用程序(pdf阅读器),而不是{{1}},这使其更具可移植性。

答案 1 :(得分:1)

朋友

尝试使用此方法在netbeans中打开pdf文件

import java.awt.Desktop;
import java.File;

 public class pdfdemo{
    public ststic void main(String args[]) throws Exception
      {
       try{

           String fil = "d:\\text.pdf";
           Desktop.getDesktop().open(new File(fil));
          }
       catch(Exception e){
          System.out.println(e);
           }
      } 
 }

答案 2 :(得分:0)

您正在尝试让rundll32程序打开一个不存在的文件,因为PDF文件是你的jar中,而不是在文件系统上。如果您希望可以从外部程序访问它,请将其存储在jar外部。

当你有IOException时,不是只显示“Error”,为什么不打印消息并堆栈异常的跟踪:它会解释为什么以及你在哪里得到错误:

ex.printStackTrace();