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 に答える
0

You're trying to make the rundll32 program open a file that doesn't exist, since the PDF file is inside your jar, and not on the file system. Store it outside of your jar if you want it to be accessible from external programs.

And instead of just displaying "Error" when you have an IOException, why don't you print the message and stack trace of the exception: it would explain why and where you get the error:

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