Javaのコンパイル時の警告の対応
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2008-02-19
Java のコンパイル時において警告が出ることがありますが、警告レベルは意外と無視してしまう場合があります。今回はその辺に注目して警告の詳細を見てみたいと思います。
まずは、サンプルで表示された警告です。ビルドは Ant の javac タスクで実行します。
[javac] 注:saratoga.java は推奨されない API を使用またはオーバーライドしています。 [javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。 [javac] 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 [javac] 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。
警告が 2 個出ていますが、このメッセージだけではわからないので、警告メッセージの通り、オプションを付けて実行してみます。
Ant タスクで、-Xlint:deprecation などのオプションをつける場合は、javac タグに書くのではなく、compilerarg タグに書きます。コマンドラインの場合は、javac の後に -Xlint:deprecation を書いて実行すれば問題ありません。
<javac debug="on" destdir="${classes}" srcdir="${src}">
<compilerarg value="-Xlint:deprecation" />
<compilerarg value="-Xlint:unchecked" />
</javac>
※一部のオプションは省力して書いてます
オプションを付けて、再度ビルドを実行してみると、具体的な警告とコードを表示してくれます。自分のソースなら修正しやすいですが、ライブラリに依存しているとちょっと手を出すのが怖い場合もありますね。
ライブラリの場合は、新しいバージョンを使ったり、JDK のバージョンを変えると挙動が変わることもありそうです。警告の一部を抜粋して書いておきます。
(Apache AXIS2)
unchecked のものは JDK1.5 ではなく、JDK1.4 だと出ないですね。
警告:[deprecation] org.apache.axis2.transport.TransportListener の
getEPRForService(java.lang.String,java.lang.String) は推奨されません。
public EndpointReference getEPRForService(String serviceName, String ip)
警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add(E) への無検査呼び出しです。
elementList.add(new javax.xml.namespace.QName("",
関連記事
上記の記事に関連する記事(最新の10件)です。


