0

私がこれまでに行ったことは次のとおりです。

/** Default location of help files folder */
private static final String DEFAULT_PATH = "../../../../resources/files/help/";
/** A 404 error file */
private static final String ERROR_404 = "../../../../resources/files/help/404.html";

/**
 * @param fileName
 * @return The URL of file, if found at default location, otherwise a 404 error page URL.
 */
public static URL getURL(String fileName) throws MalformedURLException{
    URL url = (new File(ERROR_404)).toURI().toURL();
    System.out.println(url);
    url = (new File(DEFAULT_PATH + fileName)).toURI().toURL();
    System.out.println(url);
    return url;
}

出力:

ファイル:/H:/My%20Project/Project%20Name%20Module/../../../../resources/files/help/404.html ファイル:/H:/My%20Project/Project%20Name %20Module/../../../../resources/files/help/plazaCode.html

NetBeans で作成された JAR のフォルダ階層:

ここに画像の説明を入力

私はWindows 7、JDK 7を使用しています。

アップデート:

実際、メソッドごとに HTML ページを表示するにはURL、次のようにします。JTextPane

textPane.setPage(URL url);

これよりも良い解決策はありますか?同じフォルダ階層で..?

4

3 に答える 3

1
  1. 404.htmlこれはアプリケーション リソースであるため、Jar に埋め込まれてしまう可能性があります。
  2. オブジェクトを使用してアーカイブ内のリソースにアクセスすることはできませんFile
  3. URL getURL(String fileName)混乱を避けるために、これを に変更しURL getURL(String resourceName)ます。
  4. Class.getResource(String)以前の質問で説明したとおりに使用してください。
  5. 「相対」URL は、それらを呼び出すクラスのパッケージに依存するため、その段階までに危険になります。通常、パス全体の前に 1 つのプレフィックスを付けて「絶対」にします/。これは、実質的に「このリソースをルートから探す」ことを意味します。実行時のクラスパスの」。

したがって、String次のようになります(既にアドバイスされているように残りのコードを調整します):

private static final String ERROR_404 = "/resources/files/help/404.html";
于 2012-04-07T10:38:50.517 に答える
1

使用できますURL url = getClass().getResource("...")。おそらく「/files/help/404.html」です。

于 2012-04-07T10:48:17.507 に答える
0

この方法でファイルを作成すると、相対ファイル (したがって相対 URL) が取得されます。そのパスから絶対 URL を取得するには、最初に絶対ファイルを取得する必要があります。これを試して:

new File(ERROR_404).getCanonicalFile().toURI().toURL()

(編集:上記のJTextPane情報の後)これを試したことがないので、なぜうまくいかないのかわかりません。しかし、それは別の質問です。新しい質問をする必要があります。

于 2012-04-06T12:11:34.303 に答える