- ベストアンサー
javaのコンパイルエラーについて
abstract を用いたクラスを作成し、コンパイルした際に ?サソabstract class Vehicle ↑この文字は、エンコーディングMS932にマップできません。 encoding utf-8をつけて コンパイル ?abstract class Vehicle ↑\ufeffは不正な文字です。 abstractの前には何も入っておらず、スペースも消してあります。 abstract未実装の他のソースはコンパイルできます。 解決法が知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"UTF-8"でファイルを保存する場合、"BOM有り"と"BOM無し"の二種類の方法どちらかで保存されます。WINDOWS標準のメモ帳で作成・保存した場合、基本的に"BOM有り"で保存されます。 BOMとは、"Byte Order Mark"の略で、自分はUTF-8であることを示すためにファイルの頭に見えないコードを埋め込みます。過去の遺物であり、Javaコンパイルを実施する場合はこれが悪さします。"\ufeffは不正な文字です。"はBOMが引き起こす典型的なエラーです。 BOMを除去する方法ですが、「TeraPad」や「サクラエディタ」等BOMの有無を指定して保存できるエディタがいくつか存在します。それらを用いて、一旦ファイルを"BOM無し"で保存するようにしてください。そうすれば、今回のエラーも起こらなくなるかと思います。 以上、ご参考になりましたら。
その他の回答 (1)
問題のソースファイルをテキストエディタなどで「shift_jis」で保存しなおしてみてください。 恐らく、このファイルは「BOM付きUTF8」あたりで保存されているのだと思います。この保存形式はファイルの先頭に BOM (バイトオーダーマーク) というデータが付くのですが、コンパイル時に MS932 (=shift_jis) を使用してファイルを読み込んでいる場合はこの BOM が読み込めません。