No, thank you.

おおよそ備忘録

build.xmlエラー「警告:この文字は、エンコーディング MS932 にマップできません。」

 “目の前にいない人が製造したプログラムを、遠地にいる別の人がテストをする”

 その案件を振られたとき既に「ビルドから躓きそうだなぁ」と思っていたのですケド、

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

 さ、さもありなん……!

 

*現在の環境
OS Windows 7 Professional (Service Pack 1) 32bit
Java 1.7.0_79

 なお、『Apache Axis2』を使用していて、それっぽい記述のある build.xml だったりしますが、今回の問題には関係がなかったため挙げておりません。

 

原因

 文字コードを指定した覚えなぞありませんし、製造者によるその旨の記述もありません。
 未指定のため、暗黙で“MS932”がセットされたと考えるのが妥当かな、と。

 

対策

 暗黙でセットされてしまうなら、こちらが望む文字コードを明示してあげればよさそう。

 

 build.xmlJavacタスク に、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>

 

 無事、ビルド完了しました!

 

参考