post Image
sbt 実行時に文字コードを UTF-8 に設定する

先日、久しぶりに scala + sbt でコードを書いていたら、どうにも compile が通らないという事態がありまして。

状況としては、JVM のデフォルトの文字コードが SJIS やらだったがために、UnmappableCharacterException が発生してしまっていたというもの。

   java.nio.charset.UnmappableCharacterException: Input length = 2
at java.nio.charset.CoderResult.throwException(CoderResult.java:261)
...

java実行時のオプションとして、文字コード UTF-8 を指定することで解決しました。

-Dfile.encoding=UTF-8

sbt 起動する度にオプションで指定するのも微妙なので、sbt の設定ファイルに記述しておくことに。

Windows

コンソールからデフォルトの設定を確認。
Scala 2.9.2 + sbt 0.12.2

$ sbt console

scala> scala.io.Codec.default.charSet
res0: java.nio.charset.Charset = windows-31j

sbt/sbtconfig.txt に

-Dfile.encoding=UTF-8

を追加。

sbt/sbtconfig.txt
# Set the java args to high

-Dfile.encoding=UTF-8  

-Xmx512M

-XX:MaxPermSize=256m

-XX:ReservedCodeCacheSize=128m



# Set the extra SBT options

-Dsbt.log.format=true

設定できているか確認。

$ sbt console

scala> scala.io.Codec.default.charSet
res0: java.nio.charset.Charset = UTF-8

Mac

(3/22 追記)
コメントで指摘していただいたように、起動スクリプトを直接いじるよりは ~/.sbtconfig に設定を記述するほうがスマートだと思います。

http://d.hatena.ne.jp/Yoshiori/20111212/1323691923

(追記ここまで)

コンソールからデフォルトの設定を確認。
Scala 2.10.0 + sbt 0.12.1

$ sbt console

scala> scala.io.Codec.default.charSet
res0: java.nio.charset.Charset = Shift_JIS

sbt 実行ファイル内に

-Dfile.encoding=UTF-8

を追加。

#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig
exec java -Dfile.encoding=UTF-8 -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.1/libexec/sbt-launch.jar "$@"

確認は Win と同様に。

Java周りの設定に不慣れなのもあって結構寄り道しちゃったけども、解決方法を調べるのは楽しかった。
これで本筋に戻れる!


『 Scala 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。