• ベストアンサー

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

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

noname#210419
noname#210419
  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答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

  • J2MEでUTF8ソースコードでコンパイルエラーが発生する

    J2MEのWTK2.5.2のKToolbarを使って、携帯アプリの開発をやっているのですが、Javaソースコードを今までSJISで保存していたのを、UTF-8に変更したら、下記のようなコンパイルエラーが発生しました。 全て日本語文字を使っている所のようです。 JavaソースコードをUTF8で開発するには、どこの設定を変更しないと駄目なのでしょうか?   警告:この文字は、エンコーディング MS932 にマップできません。

    • ベストアンサー
    • Java
  • Java 文字コードのエンコーディングについて

    Java 文字コードのエンコーディングについて こんばんわ。 eclipse3.5で開発(UTF-8)しているソースを、DOS窓でコンパイルすると、勝手にMS932でマッピングしようとするんですよね。 何故だかわかる方いらっしゃいませんか? また、解決策等を教えていただけると幸いです。 eclipseで開発してるのに、態々DOS窓でコンパイルしなくてもってのはなしでお願いします。(仕事上必要)

    • ベストアンサー
    • Java
  • コンパイルをしようとするとエラーらしきものが…

    最近javaをはじめたのですが、print.java.txtというファイルをコンパイルしようとすると、 javac: print.java.txt は無効なフラグです。 使い方: javac <options> <source files> 使用可能なオプションには次のものがあります。 -g すべてのデバッグ情報を生成する -g:none デバッグ情報を生成しない -g:{lines,vars,source} いくつかのデバッグ情報だけを生成する -nowarn 警告を発生させない -verbose コンパイラの動作についてメッセージを出力する -deprecation 推奨されない API が使用されているソースの位置を出力 する -classpath <path> ユーザクラスファイルを検索する位置を指定する -sourcepath <path> 入力ソースファイルを検索する位置を指定する -bootclasspath <path> ブートストラップクラスファイルの位置を置き換える -extdirs <dirs> インストール済み拡張機能の位置を置き換える -d <directory> 生成されたクラスファイルを格納する位置を指定する -encoding <encoding> ソースファイルが使用する文字エンコーディングを指定す る -source <release> 指定されたリリースとソースの互換性を保つ -target <release> 特定の VM バージョン用のクラスファイルを生成する -help 標準オプションの概要を出力する といったようなメッセージが表示されてしまうのですが、なぜでしょうか?

    • ベストアンサー
    • Java
  • コンパイルエラー

    以下のようなソースファイルをコンパイルしたらコンパイルに失敗してしまいました。エラーは『Cls1はabstractで宣言する必要があります。show(int)をCls1で定義しません』と出ます。これはどういうことでしょうか。 interface Int1 { int x=100; void Show(int y); } class Cls1 implements Int1 { public void show(int x) { System.out.println(x); } } class Test12 { public static void main(String args[]) { Cls1 c; c = new Cls1(); c.show(200); } }

    • ベストアンサー
    • Java
  • パッケージ内でコンパイルできない

    パッケージを作成して,以下のようなディレクトリ構成にしました. . ├── Sample.java └── vehicle   ├── MiniCar.java   ├── SuperCar.java   └── Vehicle.java vehicleディレクトリ内で $ javac SuperCar.java このようにコンパイルしました.ですが, SuperCar.java:3: シンボルを見つけられません。 シンボル: クラス Vehicle public class SuperCar extends Vehicle { ^ エラー 1 個 このようなエラーが出力されました. 同じディレクトリにあれば,ファイルを見つけに行ってくれると思いましたが, なぜコンパイルできないのでしょうか? #ちなみに,階層を1つ登って #$javac Sample.java #これはコンパイルできて,実行もできました. -- Sample.java -- import vehicle.*; public class Sample {    public static void main(String[] args) {      MiniCar mini = new MiniCar(2);      SuperCar scar = new SuperCar("Red");    } } -- MiniCar.java -- package vehicle; public class MiniCar extends Vehicle {   int num;   public MiniCar(int num) {      super(5,10);      this.num = num;   } } -- SuperCar.java -- package vehicle; public class SuperCar extends Vehicle {   String color;   public SuperCar(String color) {      super(10, 20);      this.color = color;   } } -- Vehicle.java -- package vehicle; public class Vehicle {   private int wheel;   private int wheelDiameter;   public Vehicle(int wheel, int wheelDiameter) {      this.wheel = wheel;      this.wheelDiameter = wheelDiameter;   } }

    • ベストアンサー
    • Java
  • javaの逆コンパイルを防ぐ方法はありますか?

    javaの逆コンパイルを防ぐ方法はありますか? javaのクラスファイル(.class)を公開したいと思います。 しかしjadやJadClipseなどの解析ソフトを使うと、簡単にソースコードが解析されてしまいます。 逆コンパイルを防ぐ方法があれば教えて下さい。 困っています。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • コンパイルエラー(Threadオブジェクト化)

    Runnableを継承したNormalClassをThreadとしてオブジェクト化しようとしているのですが、コンパイルエラーが出現して困っています。どうすればいいでしょうか? 下記エラー参照 Main.java:1: NormalClass は abstract でなく、java.lang.Runnable 内の abstract メソッド run() をオーバーライドしません。 下記ソース class NormalClass implements Runnable{ } class Main extends Thread{ public static void main(String args[]){ test = new Thread(new NormalClass()); } }

    • ベストアンサー
    • Java
  • jdk-1_5_0_07でのコンパイルエラー

    初めて質問させていただきます。 WindowsXP HOME SP2 でJavaを勉強している初心者です。エディターはEmEditorを使っています。jdk1.5.0を使って勉強していたのですが、PCのリカバリのため、新しくjdkー1_5_0_07-windows-i586-pをDLしてセッティングしたのですが、以下のような簡単な文でエラーメッセージが出ます。意味が分からないのでどうしたらいいのか分からず困っています。よろしくお願いします。 class Hello { public static void main(String args[]) { System.out.println("Hello, world!"); } } エラーメッセージ F:\java>javac Hello.java Hello.java:0: 警告:この文字は、エンコーディングMS932にマップ出来ません ?サソ/*Name it "Hello.java" ^ Hello.java:1:\65533は不正な文字です。 ?サソ/*Name it "Hello.java" ^ エラー1個 警告1個

    • ベストアンサー
    • Java
  • 【Eclipse】逆コンパイルでエラーが・・・なぜでしょうか?

    いつもお世話になっております。 Eclipseをはじめてまだ6日目ほどです・・・ クラスファイルを逆コンパイルしようとおもい、JadとJadClipseを導入しました。 早速設定も終えて、いざ逆コンパイルをすると、 「クラス・ファイル・エディター」 「ソースが見つかりませんでした。」 「クラス・ファイルtest01.classに添付されるソースファイルがありません」 と表示があります。これはなにか間違えた設定を行っているからなのでしょうか?どうぞ宜しくお願いします。 使用しているのは「Eclipse3.2.0」「Jad1.5.8g」「JadClipse3.2.4」 になります。

    • ベストアンサー
    • Java
  • エンコード指定でコンパイルエラー

    以下のソースで、UnsupportedEncodingExceptionと、 コンパイルエラーが発生します。 byte[] sjisBytes; // 適当なバイト列を入れる String string = new String(sjisBytes, "Shift_JIS"); // エラー String s; // 適当な文字列を入れる byte[] b = s.getBytes( "Shift_JIS" ); // エラー サポートされている他のエンコーディング(UTF-8など)を入れても、 同じエラーになります。 原因がわかる方いらっしゃいますでしょうか?

    • ベストアンサー
    • Java