cannot be resolved to a type

Linux (Fedora 12)上のJavaでantを実行したときのこと。

BASE64Encoder cannot be resolved to a type
BASE64Decoder cannot be resolved to a type

などのエラーが出てBUILD FAILEDになってしまう。どうしたものか…。


調べた結果 sun.misc.BASE64EncoderはSunのJDKに含まれるもののFedoraGNUJavaを使っているためにSunのパッケージを見つけられないのが原因だと発覚。なのでSun JDK 1.6のRPMをインストール。

参考: Linux環境におけるJavaインストール手順:CodeZine(コードジン)

再びantを実行してみる…が、ダメッ…!
$ which java としてみたところ、/usr/bin/java が使用される。javacなども同様。これらはシンボリックリンクなので

# cd /usr/bin/
# rm java*
# ln -s /usr/java/default/bin/java java
# ln -s /usr/java/default/bin/javadoc javadoc
# ln -s /usr/java/default/bin/javac javac
# ln -s /usr/java/default/bin/javah javah
# ln -s /usr/java/default/bin/javap javap
# ln -s /usr/java/default/bin/javaws javaws

/etc/profileに以下を追記。

export JAVA_HOME=/usr/java/default

再起動し(sourceで読み込ませれば十分だと思うけど)、再びantを実行。BUILD SUCCESSFULと出たので一安心。

Javaはプラットフォーム非依存なはずなのに…と思いながら今日はそろそろ徒歩で帰ります。約1時間かけて。