5

プロジェクトのルートフォルダーのページフォルダーにローカルに保存されているurl1.htmlという名前のHTMLファイルを表示するJEditorPaneを使用してSwingアプリケーションを作成しています。

次のStringオブジェクトをインスタンス化しました

final String pagePath = "./page/";

JEdi​​torPaneペインに表示するために、次の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();

ただし、これはアプリケーションをどこから実行するかによって異なります。ルートディレクトリがアプリの唯一の構成可能なオプションである場合はコマンドライン引数として使用し、構成ファイルがある場合は構成ファイルから取得します。

もう1つの解決策は、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 に答える