忍者ブログ
[203] [202] [201] [200] [199] [198] [197] [196] [195] [194] [193]

DATE : 2017/10/23 (Mon)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/11/07 (Tue)

Maven maven-jetty-plugin(6.0.0rc4)とで JSF を使ったページを開こうとすると、次のようなエラーが発生する場合があります。

PWC6188: The absolute uri: http://java.sun.com/jsf/html cannot be resolved in either web.xml or the jar files deployed with this application

これは、JSP のコンパイル時に、「http://java.sun.com/jsf/html」という名前空間が web.xml や配備されている JAR ファイルの中に見つからなかったことを示します。

通常、JSF の名前空間やタグを定義した TLD ファイルは JSF の実装に同梱されており、その JAR ファイルを配備すれば上記の名前空間も JAR ファイルから自動的に見つけ出されます。

しかし、プロジェクトが依存するライブラリとして JSF の実装を登録しておいても、上記のエラーは発生することがあります。

どのようにすればエラーを解決できるのでしょうか。ウェブ上を検索した結果、「Maven 2 novamente -> mvn jetty:run」(Urubatan`s Weblog)という記事が見つかりました。しかし、この記事はポルトガル語で書かれているようです。そこで、以下に記事からなんとなく分かった内容をメモしておきます。

プロジェクトが依存するライブラリとして JSF の実装を登録するには、POM ファイルに次のように記述します。(ここでは、JSF の実装として Apache MyFaces を取り上げます。 「...」は省略を表します)

...
    <dependencies>
      <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>1.1.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>1.1.4</version>
      </dependency>
    </dependencies>
...

JSP のコンパイル時に JSF の名前空間が見つからないエラーが出る場合は、上の記述を maven-jetty-plugin の設定にコピーします。

例えば、以下がコピー前の maven-jetty-plugin の設定だとすると

...
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
          <scanIntervalSeconds>10</scanIntervalSeconds>
        </configuration>
      </plugin>
...

maven-jetty-plugin が依存するライブラリとして、JSF の実装を登録します。

...
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>1.1.4</version>
          </dependency>
          <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>1.1.4</version>
          </dependency>
        </dependencies>
        <configuration>
          <scanIntervalSeconds>10</scanIntervalSeconds>
        </configuration>
      </plugin>
...

このようにすることで、maven-jetty-plugin で JSP のコンパイル時に JSF の名前空間が見つからないというエラーを防ぐことができます。

2006-11-22 追記

この現象は、maven-jetty-plugin で起動される Jetty ウェブサーバのバグと分かりました。詳しくは、「maven-jetty-plugin で JSF の名前空間が見つからないのはバグ」をご覧ください。

現状では、まだこのバグは直っていません。

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)