• ベストアンサー

javaのコンパイルエラーについて

abstract を用いたクラスを作成し、コンパイルした際に ?サソabstract class Vehicle ↑この文字は、エンコーディングMS932にマップできません。 encoding utf-8をつけて コンパイル ?abstract class Vehicle ↑\ufeffは不正な文字です。 abstractの前には何も入っておらず、スペースも消してあります。 abstract未実装の他のソースはコンパイルできます。 解決法が知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 "UTF-8"でファイルを保存する場合、"BOM有り"と"BOM無し"の二種類の方法どちらかで保存されます。WINDOWS標準のメモ帳で作成・保存した場合、基本的に"BOM有り"で保存されます。  BOMとは、"Byte Order Mark"の略で、自分はUTF-8であることを示すためにファイルの頭に見えないコードを埋め込みます。過去の遺物であり、Javaコンパイルを実施する場合はこれが悪さします。"\ufeffは不正な文字です。"はBOMが引き起こす典型的なエラーです。  BOMを除去する方法ですが、「TeraPad」や「サクラエディタ」等BOMの有無を指定して保存できるエディタがいくつか存在します。それらを用いて、一旦ファイルを"BOM無し"で保存するようにしてください。そうすれば、今回のエラーも起こらなくなるかと思います。  以上、ご参考になりましたら。

その他の回答 (1)

noname#212058
noname#212058
回答No.1

問題のソースファイルをテキストエディタなどで「shift_jis」で保存しなおしてみてください。 恐らく、このファイルは「BOM付きUTF8」あたりで保存されているのだと思います。この保存形式はファイルの先頭に BOM (バイトオーダーマーク) というデータが付くのですが、コンパイル時に MS932 (=shift_jis) を使用してファイルを読み込んでいる場合はこの BOM が読み込めません。

関連するQ&A