build.xmlエラー「警告:この文字は、エンコーディング MS932 にマップできません。」
“目の前にいない人が製造したプログラムを、遠地にいる別の人がテストをする”
その案件を振られたとき既に「ビルドから躓きそうだなぁ」と思っていたのですケド、
警告:この文字は、エンコーディング MS932 にマップできません。
さ、さもありなん……!
OS | Windows 7 Professional (Service Pack 1) 32bit |
---|---|
Java | 1.7.0_79 |
なお、『Apache Axis2』を使用していて、それっぽい記述のある build.xml だったりしますが、今回の問題には関係がなかったため挙げておりません。
原因
文字コードを指定した覚えなぞありませんし、製造者によるその旨の記述もありません。
未指定のため、暗黙で“MS932”がセットされたと考えるのが妥当かな、と。
対策
暗黙でセットされてしまうなら、こちらが望む文字コードを明示してあげればよさそう。
build.xml の Javacタスク に、encoding属性 を追記します。
<target depends="pre.compile.test" name="compile.src" if="jars.ok">
<javac encoding="utf-8" debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true" destdir="${classes}" srcdir="${src}" includeantruntime="false">
<classpath refid="axis2.class.path"/>
</javac>
</target>
<target depends="compile.src" name="compile.test" if="jars.ok">
<javac encoding="utf-8" debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true" destdir="${classes}" includeantruntime="false">
<src path="${test}"/>
<classpath refid="axis2.class.path"/>
</javac>
</target>
無事、ビルド完了しました!
参考
- 久々のStaxで、Antのコンパイル時文字コードにハマるblog.tarotaro.org(2009/08/22)