アラサーからのプログラマー生活

アラサーの新米PGが必死に頑張る成長記録です。あとは旅行とか。

初心者が起こしたJavaのコンパイル時のエラー

こんばんは、堀井です。

postgreSQLを一通り勉強した後は、Javaでそれを弄ってみようということで早速Javaを使おうと思ったのですが、テキストに書いてあることを実施してもエラーが出たので、時間を掛けて一つずつ潰していきました。
ようやくコンパイルが出来たので完全初心者が起こしたエラーを紹介します。


Javaの環境構築の方法が分からない

今までC言語とSwiftとExcelVBAとpostgreSQLを学んできたのですが、全てコンパイラが付いているIDE(統合開発環境、自分の場合はXcodeとMicrosoftExcel)で実行していたためコンパイルと言う機能そのものを意識して行ったことは一度もありませんでした。
その為いざメモ帳でソースコードを書いても「拡張子を".java"に書き換えれば実行できるの?」と言うくらいにはわけが分かりませんでした。


JDKの準備をしよう

開発環境にはJDK(Java Development Kit)と呼ばれるものが必要となりますので、
Java SE Development Kit 8 - Downloadsからダウンロードしましょう。
f:id:hollage0214:20180930220906p:plain

  1. ライセンス規約に同意
  2. 自分の環境下に合ったものをインストール

※windowsの32bit版OSユーザーはx86を使わないと動きませんが、64bit版の方はx86でもx64でもどちらでも動くようです。
ただ32bit版は持っていないので未確認です。


ありがちなエラーと対応

さあこれでコンパイルができる!!と思い込んだので意気揚々とHello, Worldを書きます。

public clas Hello{
	public static void main(String[] args){
		System.out.print("Hello, world!");
	}
}

とコードを書いてhello.javaと言うファイル名で保存しました。
コマンドプロンプトからは

javac hello.java

で実行することが出来ます。
ではどうなるでしょうか?


'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。

あれ?ちゃんとインストールしたのですが・・・。
と言うことで何時間も調べたところ、PATHの設定が出来ていないのが原因だと言うことが判明しました。
ちなみに個人サイトではありますが、問題解決にはこちらを参考にしています。
www.javadrive.jp
>Javaを使ったプログラムのコンパイルや実行するために必要なファイルが設置されたディレクトリへPATHを設定する方法
と言うことです。
無事にPATH設定をしましたので、次はどうなる・・・。


class、interfaceまたはenumがありません

と言うエラーが出ました。
ソースコードをじっくり見てみると誤字がありました
1行目でclass -> clasになっていましたので直しましょう。
大文字・小文字もダメなので気をつけてください。
次はちゃんとコンパイルされるかな・・・?


クラス[クラス名]はpublicであり、ファイル[ファイル名].javaで宣言する必要があります

先ほどのエラーを直してみると今度は上記のように出ました。
このエラーですが、ファイル名がhello.javaに対して、ソースコードのクラス宣言がpublic class Hello{}となっていたのが原因でした。
この大文字小文字をどちらかに揃えてください。ファイル名とクラス名は同じでなければいけません
今回はHelloと直しました。
と言うことで今度こそ大丈夫であってくれ・・・!!!


エラー: [ファイル名]の書込み中にエラーが発生しました: C:\ [ディレクトリ名] \Hello.class

もう!なんだよこれ!!いい加減にして!!
と思ったらこれアクセス権限が掛かっているところにファイルを置いていたことが原因だと判明しました。
とりあえずデスクトップとかに移動させました。
いい加減頼むぞ!!コンパイルできてくれ!!!


無事コンパイルが出来たら

ようやくコンパイルが出来て、無事にHello.classと言うファイルが生成されました。
ここまでに丸々1日は掛かりました。
その後の実行方法ですが、Hello.javaが置いてある場所(デスクトップであればC:\Userts\Desktopなど)にディレクトリを移動させてから

java Hello

で実行が出来ます。


エラー: メイン・クラスhelloを検出およびロードできませんでした

実行コマンド入力時にもし大文字小文字を間違えてしまったらこのようなエラーが出ます。


実行できたら

Hello, world!!

と出ます。
まあ、当たり前ですよね。


実行までのプロセス

ざっくりまとめると、

  1. 開発環境を準備し、PATHを設定する
  2. ソースコードをメモ帳などで書き準備をする(.java)
  3. コンパイル(機械語への翻訳)を行いクラスファイル(.class)を作成
  4. 実行する

となります。
初心者なのでRunボタンを押すだけで行えればいいのにと思ってしまいます。



さてあれこれ悩んだ結果、ようやくコンパイルと実行が出来たのでこれで本格的に自宅での勉強も出来そうです。
ここ暫くはこういったことに悩んでいましたのでブログを書こうとも思えませんでした・・・。

また明日が勤務初日となりますので、余裕が出来るまでにまだまだ時間が掛かりそうですのでどうしても更新頻度は落ちてしまいますが今後ともよろしくお願いします。
それではまた次回。