我正在创建一个带有 JEditorPane
的 Swing 应用程序,它应该显示一个名为 url1.html
的 HTML 文件,该文件本地存储在 page 文件夹中项目的根文件夹。
我已经实例化了以下字符串对象
final String pagePath = "./page/";
为了在 JEditorPane
Pane 中显示,我创建了以下 URL 对象:
URL url1 = new URL("file:///"+pagePath+"url1.html");
但是当使用创建的 URL 对象作为参数调用 setPage()
方法时:
pagePane.setPage(url1);
它抛出一个 java.io.FileNotFoundException
错误。
url1
的构建方式似乎有问题。有人知道这个问题的解决方案吗?
最佳答案
解决办法是找到url1.html
的绝对路径,在上面做一个java.io.File
的对象,然后用toURI() .toURL()
组合:
URL url1 = (new java.io.File(absolutePathToHTMLFile)).toURI().toURL();
假设当前目录是page
的根目录,你可以传递一个相对路径给File
:
URL url1 = (new java.io.File("page/url1.html")).toURI().toURL();
或
URL url1 = (new java.io.File(new java.io.File("page"), "url1.html")).toURI().toURL();
但这取决于您从何处运行应用程序。如果根目录是应用程序的唯一可配置选项,或者如果它有一个配置文件,我会让它把根目录作为命令行参数。
另一种解决方案是将 html 文件作为资源放入应用程序的 jar 文件中。
关于java - 创建具有相对路径的 URL 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247736/