【发布时间】:2018-05-05 21:19:22
【问题描述】:
我正在使用以下代码从 java 打开一个 pdf 文件。当我从 IDE 运行应用程序时,该代码有效。但是,当生成 jar 并执行它时,代码停止工作。我不知道我做错了什么。我试过改变文件夹的罐子,但它仍然不起作用。似乎问题在于 ubuntu 16.04 如何处理路由,因为在 Windows 中这可以正常工作。应用程序不会抛出异常
我获取 pdf 的方式对另一个应用程序执行相同的操作,但在其中我得到一个图像,它既可以在 jar 中工作,也可以在 ide 中执行。
jbTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/tree.png")));
按钮代码
if (Desktop.isDesktopSupported()) {
try {
File myFile = new File (getClass().getResource("/help/help.pdf").toURI());
Desktop.getDesktop().open(myFile);
} catch (IOException | URISyntaxException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
}
解决方案是通过控制台运行应用程序。尝试以其他方式运行它是行不通的。
【问题讨论】:
-
你的 pdf 也可能被打包到 jar 中了吗?
-
@RobinGreen 我不想按行读取文件。我想从我的应用程序中的按钮打开 pdf。这在 Windows 中对我有用。在 ubuntu 16.04 中它对我不起作用。
-
Desktop.getDesktop().open(myFile);打开任何其他文件?而不是只打印“异常”,您应该打印原始堆栈跟踪以查看实际消息是什么,“没有这样的文件或目录”(可能是大写/小写不匹配,Windows 马虎),缺少权限(不太可能,但可能)或者可能没有为桌面指定打开 PDF 的程序(不知道在哪里寻找它 - 可能是设置:Ubuntu 级别的默认应用程序)。并查看 Thecarismas 帖子,如何写 minimal reproducible example。
-
无法从 jar 中读取文件。您是否将 PDF 文件复制到 Ubuntu 系统并放在同一个地方?该目录甚至存在于 Ubuntu 系统上吗?
-
@pete “我认为问题在于 Windows 中的路径正常工作。但目前我使用的是 ubuntu 16.04,但它不起作用。” - 不。最有可能的问题是您的 pdf 也被打包到 jar 中。如果 PDF 在 jar 中,则它不是文件系统中的独立文件。另一方面,您的
Desktop.getDesktop().open(myFile)确实希望文件系统中有一个独立的文件。
标签: java pdf jar ubuntu-16.04