ベーシスト兼ソフトウェアエンジニアのブログ。 日々感じたことなどを気まぐれに書きます。
Mavenトラブル事例-TomcatプラグインでJSPが文字化け
2006年08月27日(日) 01:00
続々々Mavenトラブル事例。

Tomcatプラグイン1.2.1で、日本語を含むJSPをプリコンパイルすると、

 hoge_jsp.java:10: 警告: この文字は、エンコーディング MS932 にマップできません。

のような警告がでます。
そのままビルドはできますが、Tomcatにデプロイしてアクセスすると
日本語が文字化けしてしまいます。

原因は、JSPプリコンパイル時の文字コードが、UTF-8固定になっていることにあります。

JSPをプリコンパイルするTomcatのプリコンパイラ(org.apache.jasper.JspC)では、
生成するServletのソースコードのデフォルト文字コードがUTF-8になっています。
Windowsで開発している場合はソースコードはMS932で書くことが多く、
コンパイル時もMS932を指定するので、ここで文字化けが起こってしまうのです。

対応としては、TomcatプラグインのJellyスクリプトを改造するしかありません。
(Tomcatプラグインには、プリコンパイル時の文字コードを指定するプロパティ
は用意されていないようです)

Tomcatプラグインのplugin.jellyに、_jspcと言うゴールがあり、
その中でjasper2タスクが実行されるようになっています。

jasper2タスクには、javaEncodingプロパティが用意されているので、
これを使って文字コードを指定するようにすればOKです。

<jasper2 validateXml="false"
  uriroot="${maven.war.webapp.dir}"
  webXmlFragment="${maven.build.dir}/tomcat/src/WEB-INF/generated_web.xml"
  addWebXmlMappings="true"
  outputDir="${maven.build.dir}/tomcat/src/java"
  javaEncoding="MS932"/>

別窓 | ソフトウェア開発 Maven | コメント:2 | トラックバック:0 | ↑top
<<Mavenトラブル事例-jarゴールでStringIndexOutOfBoundsException | ベーシスト兼ソフトウェアエンジニアのブログ | Mavenトラブル事例-Maven1.0.xでTomcatプラグイン>>
この記事へのコメント
> javaEcoding="MS932"の部分ですが、javaEncodingの綴り誤りのようですよ。
あうち。
ご指摘ありがとうございます。修正しておきました。

2007年10月06日(土) 15:39 | URL | crossroad #-[ 内容変更]

この記事があったおかげで、文字化けが解決することができましたわ〜
さんくすですー。

javaEcoding="MS932"の部分ですが、javaEncodingの綴り誤りのようですよ。
2007年10月06日(土) 14:08 | URL | jun #.HyIGWrU[ 内容変更]

↑top | under↓
コメントの投稿














管理者だけに閲覧

この記事のトラックバック
トラックバックURL

list FC2ブログユーザー専用トラックバックURLはこちら
↑top | under↓
| ベーシスト兼ソフトウェアエンジニアのブログ |