久しぶりにノートPCにJavaをインストール。
Windows7 64bit環境にCygwinを入れて、JDK7をインストールして、さあ、と思ったらコンパイルできない。
まず、PATHが通っていなかったのでPATHとCLASSPATHを通したのだけれど、これ、JDK6では自動で通してくれていた気がする。
そして実際コンパイルしたらエラーだらけ。原因はコメントの日本語文字列。
プログラムはUTF-8で書いていたので、S-JISに文字コードを変えてみたら通る。
Cygwinが悪い?と疑ってみたが、DOSプロンプトでも同じ現象。
調べたら
::memolet | jdkのツールがUTF-8環境で文字化けする
に書いてある通り、コンパイル時にオプションで
-J-Dfile.encoding=UTF-8
をつけると通った。
.bashrcにエイリアスを追加したが、なんか気持ち悪い〜。
追記:
さらに実行しようとしたら
java.lang.UnsupportedClassVersionError: XXXX : Unsupported major.minor version 51.0
が発生。
Java 7 Questions & Answers (Henrik on Java)
によると、javaのバージョンが1.6以前だとこうなるとのこと。
えー、と思ってバージョンを確認。
$ javac -version
javac 1.7.0_03
javac: ターゲット・リリース1.6がデフォルトのソース・リリース1.7と競合しています
$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
$ which javac
/cygdrive/c/Program Files/Java/jdk1.7.0_03/bin/javac
$ which java
/cygdrive/c/windows/system32/java
やられた…。
こちらはPATHの先頭にJavaのパスを移動することで解決。