1

我有一个 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);
        }
4

3 回答 3

3

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

再次,而不是与您一起运行应用程序(pdf 阅读器),Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + helppath);而应该使用Desktop.getDesktop().open(file_name);它使其更便携。

于 2013-03-10T09:16:49.940 回答
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);
           }
      } 
 }
于 2016-04-14T07:35:59.003 回答
0

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

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

ex.printStackTrace();
于 2013-03-10T09:11:35.417 回答