我有一个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);
}
答案 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();