※新しい対策記事を上げました(2014/07/20)
-【解決済み】【Scala】WindowsでGit Bash利用時のsbt文字化け問題とその対策 - White Box技術部
もーーーーーーーーーーーーーーーーーーーーーーーー!!
・・・おはようございます。
書きたいプログラムがあって作っていたのですが、sbt周りで躓いてしまって、出社前までに完成しそうにないので、残りの時間で詰まったところを書こうと思います。
事の発端: Scala学習 => sbtで詰まった
先日からScalaの勉強を再開したのですが、しばらくぶり過ぎて完全に忘れていました。
手持ちの「Scalaプログラミング入門」は読んでると眠くなる、コップ本は細かすぎるということで、 「Scala逆引きレシピ」を通勤中に読みながらちまちまやっています。
Javaが後ろにあるからなのか、Scalaの文法を学んでいると、どうしてもGroovyと比較してしまうのですが、今のところ自分の感覚としては
といった感じです。
HTTP通信がしたいので
Scala逆引きレシピの168を参考にsbtの設定をしてsbt compileをしたところ、Dispatchが見つからないと怒られました。
Dispatchの公式を見に行ったところ、sbtへの書き方が変わっていたようなので、build.sbtの記述を以下のように修正します。
#build.sbtは設定の間に改行が必要です。
libraryDependencies ++= Seq( "net.databinder.dispatch" %% "dispatch-core" % "0.11.1" )
これでライブラリの取得は成功しました。
が、コンパイルが失敗する
ライブラリの取得後にコンソール上に出てきたのはおびただしい文字化けの嵐。
というわけで次はsbtの文字化けについて調べたところ、Qiitaで詳しく書いてくれていた人がいたので参考にさせて貰いました。
自分の環境はWindowsなので、sbtインストールフォルダ配下のconfig/sbtconfig.txtの先頭付近に「-Dfile.encoding=UTF-8」を記述します。
#ここも周りに倣って、設定行の間に改行を入れています。
- sbt\conf\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
文字化け直らず
実施後もscala.io.Codec.default.charSetは変わらずwindows-31jを指し、文字化けが治りません。
ややあって気付くのですが、自分がGit Bashで作業していたため、sbt.batではなくsbtの方が実行されており、うまくいっていないようでした。
文字化け解決
sbtに直接エンコード設定を書く方法もありそうですが、面倒だったので.bashrcを作成し、bashのJava実行オプションを固定で設定して対応することにしました。
自分は環境変数に「HOME」を設定しているので、そのパスにGit Bashで移動してvimから.bashrcを作成し、以下を記載しました。
- ~/.bashrc
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
Git Bushから以下のようにsourceコマンドを叩いて再実行したところ、今度は無事文字コードがUTF-8になりました。
source ~/.bashrc
良かった良かった。
ではいってきます。