2012年4月14日土曜日

Javaでコンパイル時にエラーになる

図書館から借りてきた次の本でJavaを学習しています。

丸の内とら『10日でおぼえるJava入門教室 第3版』 翔泳社 2012年

まだ始めたばかりですが、こんなエラーが出て悩みました。

なお、ソースファイルの保存場所は c:\Java10\lesson03 。

---------------------------------------------
例1

c:\Java10\lesson03>javac HelloWorld.java
HelloWorld.java:2: エラー: <identifier>がありません
pubulic static void main(String[] args) {
     ^
エラー1個

---------------------------------------------

例2
c:\Java10\lesson03>javac lesson03.java
lesson03.java:1: エラー: クラスLesson03はpublicであり、
ファイルLesson03.javaで宣言する必要があります
public class Lesson03 {
    ^
エラー1個

---------------------------------------------

ちなみに、例1と例2のソースファイルは次のとおり。


---------------------------------------------
例1のファイル名:HelloWorld.java


public class HelloWorld {
pubulic static void main(String[] args) {
System.out.println("Hello World !");
}
}
---------------------------------------------

例2のファイル名:lesson03.java


public class Lesson03 {
public static void main(String[] args) {
System.out.println("Hello Java !");
}
}
---------------------------------------------



一見、内容的にさほど違いがないように見えましたが、
よくよく観察すると、判りました。

例1の場合は、予約語が間違っています。
pubulic は、正しくは public 。
後者のように直してソールファイルを保存後に
再度コンパイルしたら、エラーがなくなりました。

例2の場合は、予約語の綴(つづ)りは合っています。
では何が悪いのか?
実は保存した時のファイル名が間違っていました。
lesson03.java は、正しくは Lesson03.java 。

要するにソースファイルに書いた class名(=Lesson03)と
同じファイル名(=Lesson03.java)で保存しなければならないのです。

コマンドプロンプトで次のように名前を変更してからコンパイルしたら
エラーは無くなりました。

c:\Java10\lesson03>ren lesson03.java Lesson03.java

実行結果は次のとおりです。
---------------------------------------------
c:\Java10\lesson03>javac HelloWorld.java

c:\Java10\lesson03>java HelloWorld
Hello World !

c:\Java10\lesson03>javac Lesson03.java

c:\Java10\lesson03>java Lesson03
Hello Java !
---------------------------------------------
以上の間違いに気がつくまで30分くらい掛かりました。
初心者に陥(おちい)りがちなミスの例としてメモしておきます。

0 件のコメント:

コメントを投稿