私は MyFaces Facelets アプリケーションを持っていますが、ページのコーディングは少し荒いです。とにかく、これは Eclipse で開発され、Ant でビルドされており、Tomcat 2.0.26 で問題なく動作します。ここまでは順調ですね。
さて、Maven でビルドしたいので、いくつかの pom ファイルを作成し、それらを Netbeans で開いてビルドしました。これで、正常にデプロイされる war ファイルができました。ただし、任意の facelet ページでは、
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
それで、私はさまざまなことを試しましたが、アプリケーションは実際にfaceletのものなしで単純なページを実行しました. しかし、代わりに Ant でビルドするだけですべてが実行されます...だから私の質問は、これを引き起こす可能性のある ant ビルドと maven ビルドの最も可能性の高い違いは何ですか?
また、Netbeans と pom ファイルで UTF-8 用に構成したにもかかわらず、Netbeans は最終的に facelet ファイルを編集後に ISO-8859-1 として報告することになるようです。
ほとんどの中央ライブラリが同じバージョン (特に xerces 2.3.0) であることを確認しました。効果のないエンコーディング サーブレット フィルターを追加しました。
そして、その逆よりも、Maven ビルドを修正してバグのあるページを維持したいと思います。バグのあるページを修正するのではなく、Naven を導入することが私の意図です。
pom.xml がエンコーディングについて述べていることは次のとおりです。
基本的に pom.xml には次のセットがあります...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.2</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
....
<properties>
<netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>