5

我正在创建一个带有 JEditorPane 的 Swing 应用程序,它应该显示一个名为url1.html的 HTML 文件,该文件本地存储在项目根文件夹的页面文件夹中。

我已经实例化了以下 String 对象

final String pagePath = "./page/";

为了让 JEditorPane 窗格显示,我创建了以下 URL 对象:

URL url1 = new URL("file:///"+pagePath+"url1.html");

但是,当使用创建的 URL 对象作为参数调用 setPage 方法时

pagePane.setPage(url1);

它给我一个 java.io.FileNotFoundException 错误

似乎url1的构造方式有问题。有谁知道这个问题的解决方案?

4

3 回答 3

12

解决方法是找到一个绝对路径在其上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 文件中。

于 2010-11-22T16:42:15.947 回答
1

要从类路径加载资源(如 khachik 所述),您可以执行以下操作:

URL url = getClass().getResource("page/url1.html");

或从静态上下文中:

URL url = Thread.currentThread().getContextClassLoader().getResource("page/url1.html");

因此,在上述情况下,使用 Maven 结构,HTML 页面将位于如下位置:

C:/myProject/src/main/resources/page/url1.html
于 2015-10-14T14:26:16.650 回答
0

我会尝试以下

URL url = new URL("file", "", pagePath+"url1.html");

我相信通过连接整个字符串,您会遇到问题。让我知道,如果这有帮助

于 2010-11-22T16:49:18.743 回答