コメントを入れただけなのにコンパイルエラーとなった

結論

以下のようにして環境変数を設定しておきましょうという話。

export JAVA_OPTS="-Dfile.encoding=UTF-8"

何が起きたの?

とあるコンパイルが通るScalaプログラムに、コメントを入れてコンパイルし直したらコンパイルが通らなくなった。

具体例

コメントなし

これはコンパイルできる。

object HelloWorld {
  def greeting {
    println("HelloWorld")
  }
}
scala> :load ./HelloWorld.scala
Loading ./HelloWorld.scala...
defined module HelloWorld

scala> HelloWorld.greeting     
HelloWorld
コメントあり

コメントを入れただけなのにコンパイルエラーとなった。

object HelloWorld {
  def greeting {
    println("HelloWorld") // し
  }
}
scala> :load ./HelloWorld.scala
Loading ./HelloWorld.scala...
<script>:4: error: Missing closing brace `}' assumed here
}
^

調べてみたら

ちなみにmac環境にて日本語を文字化けさせずに実行するには

export JAVA_OPTS="-Dfile.encoding=UTF-8"

が必要っぽい。

Hello! Scala!!|Happy Tuning

エンコーディングの問題みたいですね。

対策と結果

環境変数を設定して、再度試みると問題なくコンパイルできた。

% export JAVA_OPTS="-Dfile.encoding=UTF-8"
% scala
Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :load ./HelloWorld.scala
Loading ./HelloWorld.scala...
defined module HelloWorld

scala> HelloWorld.greeting     
HelloWorld