スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

sbtのcompile時のエンコード関係エラー

■JavaのソースがUTF-8


JavaのソースコードをUTF-8で書いていた場合に発生。

H:\temp\scala>sbt compile
[info] Loading project definition from H:\temp\scala\project
[info] Set current project to Hello World (in build file:/H:/temp/scala/)
[info] Compiling 1 Java source to H:\temp\scala\target\scala-2.10\classes...
[error] H:\temp\scala\src\main\java\Test.java:3: エラー: この文字は、エンコーデ
ィングMS932にマップできません
[error] //繝?せ繝?
[error] ^
[error] H:\temp\scala\src\main\java\Test.java:3: エラー: この文字は、エンコーデ
ィングMS932にマップできません
[error] //繝?せ繝?
[error] ^
[error] エラー2個
[error] (compile:compile) javac returned nonzero exit code
[error] Total time: 1 s, completed 2014/11/07 23:56:02



対処方法


build.sbtに javacOptions ++= Seq("-encoding", "UTF-8") を加える。

name := "Hello World"

version := "1.0"

scalaVersion := "2.10.0"

scalacOptions ++= Seq("-encoding", "UTF-8")

javacOptions ++= Seq("-encoding", "UTF-8")

* 注意) 各行の間の空行は必要

なお、 javacOptions では、エンコード以外のjavacオプションも渡せる。


■scalaのソースがUTF-8ではない


scalaのソースコードをUTF-8以外で書いていた場合。
(scalacはデフォルトで UTF-8 )

H:\temp\scala>sbt compile
[info] Loading project definition from H:\temp\scala\project
[info] Set current project to Hello World (in build file:/H:/temp/scala/)
[info] Updating {file:/H:/temp/scala/}scala...
[info] Resolving org.scala-lang#scala-library;2.10.0 ...
[info] Resolving org.scala-lang#scala-compiler;2.10.0 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.0 ...
[info] Resolving org.scala-lang#jline;2.10.0 ...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source and 1 Java source to H:\temp\scala\target\scala-
2.10\classes...
[error] IO error while decoding H:\temp\scala\src\main\java\Test.java with windo
ws-31j
[error] Please try specifying another one using the -encoding option
[error] IO error while decoding H:\temp\scala\src\main\scala\Hello.scala with wi
ndows-31j
[error] Please try specifying another one using the -encoding option
[error] two errors found
[error] (compile:compile) Compilation failed
[error] Total time: 1 s, completed 2014/11/07 23:59:28



対処方法

build.sbt の scalacOptions ++= Seq("-encoding", "エンコード") でエンコードを指定する



■ファイルにUTF-8のBOMがある場合


Windowsのメモ帳でUTF-8で保存してしまったときなんかに発生する。
ソースファイルにUTF-8のBOMがあることが原因。

H:\temp\scala>sbt compile
[info] Loading project definition from H:\temp\scala\project
[info] Set current project to Hello World (in build file:/H:/temp/scala/)
[info] Compiling 1 Scala source to H:\temp\scala\target\scala-2.10\classes...
[error] H:\temp\scala\src\main\scala\Hello.scala:1: illegal character '\ufeff'
[error] ?object HelloWorld {
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 1 s, completed 2014/11/07 23:53:23



対処方法

BOMを削除すればよい。
簡単な方法としては、下記のような方法
・サクラエディタなどのエディタで開いて先頭部分を削除する。
・エンコードを変えていいなら、メモ帳で開いてSJISで保存しなおす。


■関連

sbtでjavaとscalaが混在したプロジェクトのjarを作成してみる
\65279 は不正な文字です というエラーが出た


以上。
スポンサーサイト

テーマ : ソフトウェア開発
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

検索フォーム
プロフィール

takuan93

Author:takuan93
本ブログの説明書→「ReadMe」

管理者に連絡

カテゴリ
WiX (5)
Ant (1)
フリーエリア
最新記事
カウンター
カレンダー
03 | 2018/04 | 05
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。