Javaのpackage文でエラーが出てコンパイルできない時の修正方法

Javaのpackage文でエラーが出てコンパイルできない時の修正方法

こんにちは。ネットショップコンサルタントの「たぶ」(@yusuke_tanaka34)です。

今日は『Javaのpackage文でエラーが出てコンパイルできない時の修正方法』をご紹介していこうと思います!

今回の記事は、

  • Javaの勉強をしている方
  • 「スッキリわかるJava入門」を読んでいる方
  • Javaのpackage文でつまづいた方

におすすめです!

2019年に入ってから「スッキリわかるJava入門」を読んで、Javaの勉強をしています。

「スッキリわかるJava入門」のP230「パッケージを利用する」で、リスト6-5、6-6に書かれているソースコードを打ち込んだところ、エラーが出てコンパイルできませんでした。

たぶ
「スッキリわかるJava入門」には、コンパイルまではできる感じで書かれているんですけど・・・

そうなんです。「スッキリわかるJava入門」には、

※このコードは、後の6、7節で紹介する方法を用いて実行する必要があります。現状ではコンパイルまでできれば構いません。

と書かれているんですね。

でも、実際にはコンパイルできないんです。

こういうところでつまづくと、プログラミングやJavaの勉強も挫折してしまいそうになりますよね。

僕も、この「package文のコンパイルエラー」で半日ぐらいGoogle検索をして、少し心が折れかかりました。(笑)

でも、実は「スッキリわかるJava入門」のP230〜P242に書かれているサンプルコードは、この段階ではコンパイルできない状態なんです。

この記事に書いてある『Javaのpackage文でエラーが出てコンパイルできない時の修正方法』を読めば、Javaで出たpackage文のコンパイルエラーを修正できちゃいます!

結論から先に言ってしまうと、フォルダの階層を適切な形にすることで、コンパイルができるようになります。

ものの5分もあれば簡単にコンパイルエラーを修正できるので、サクッと修正して、Javaの勉強を進めましょう!

それでは、実際に『Javaのpackage文でエラーが出てコンパイルできない時の修正方法』を詳しく解説していきたいと思います。




Javaのpackage文でコンパイルエラーが出た時の流れ

Javaのpackage文でコンパイルエラーが出た時の流れ

まず、「スッキリわかるJava入門」のP222「ソースファイルを分割する」に記載されている「計算機プログラム」のソースコードを入力していきます。

そして、P230「パッケージを利用する」に掲載されている、リスト6-5、6-6のソースコードを打ち込むとこうなります。

【Calc.java】

package calcapp.main;
public class Calc {
  public static void main (String[] args) {
    int a = 10;
    int b = 2;
    int total = CalcLogic.tasu(a, b);
    int delta = CalcLogic.hiku(a, b);
    System.out.println("足すと" + total + "、引くと" + delta );
  }
}

【CalcLogic.java】

package calcapp.logics;
public class CalcLogic {
  public static int tasu(int a, int b) {
    return (a + b);
  }
  public static int hiku(int a, int b) {
    return (a - b);
  }
}

出典:「スッキリわかるJava入門

クラスをパッケージに所属させるためにpackage文を打ち込んだら、コンパイルを行います。

javac Calc.java

と打ち込んで、Enterキーを押すと、

Calc.java:6: シンボルを見つけられません。
シンボル: 変数 CalcLogic
場所    : calcapp.main.Calc の クラス
		int total = CalcLogic.tasu(a, b);
		            ^
Calc.java:7: シンボルを見つけられません。
シンボル: 変数 CalcLogic
場所    : calcapp.main.Calc の クラス
		int delta = CalcLogic.hiku(a, b);
		            ^
エラー 2 個

とエラーが出て、コンパイルができませんでした。

ちなみに、僕の場合は、こんな感じで文字化けも起こっており、エラーの内容すら分かりませんでした。(笑)

Calc.java:6: ?V???{???????‚????܂???B
?V???{??: ?ϐ? CalcLogic
?ꏊ    : calcapp.main.Calc ?? ?N???X
		int total = CalcLogic.tasu(a, b);
		            ^
Calc.java:7: ?V???{???????‚????܂???B
?V???{??: ?ϐ? CalcLogic
?ꏊ    : calcapp.main.Calc ?? ?N???X
		int delta = CalcLogic.hiku(a, b);
		            ^
?G???[ 2 ??

javaのコンパイルエラーの文字化けを修正する方法は、こちらの記事をどうぞ。

Javaでコンパイルエラーの文字化けを修正する方法【Macの場合】

Javaでコンパイルエラーの文字化けを修正する方法【Macの場合】

2019年9月16日

上記のエラーメッセージから、『「CalcLogic.java」がうまく読み込めていないんだろう』ということが分かります。

package文を入れる前まではうまくコンパイルができていたので、package文が原因でコンパイルエラーが出ているんですね。

ちなみに、P230〜P242までは、どのサンプルコードを打ち込んでも、コンパイルするとエラーが出てしまいます。

どうすれば、コンパイルエラーを出さずに、javaの勉強を進めることができるのでしょうか?

それでは次に、「Javaのpackage文でコンパイルエラーを修正する方法」を見ていきたいと思います。




Javaのpackage文でコンパイルエラーを修正する方法

Javaのpackage文でコンパイルエラーを修正する方法

結論から先に言うと、フォルダの階層を適切な形にします。

実際の解決方法はP255「パッケージに属したクラスの実行方法」にも解説されているのですが、「スッキリわかるJava入門」ではコンパイルはできる前提で話が進んでいるので、混乱してしまいますよね。

まず、現時点ではフォルダの中身はこんな感じになっています。

javaフォルダの中身

今回は、「デスクトップ」に「Java」というフォルダを作って、その中にjavaプログラムを作っています。

上記で作った「Calc.java」と「CalcLogic.java」を、下記のようなフォルダを作って入れます。

Javaのpackage階層に対応したフォルダ階層図

「java」フォルダの中の「calcapp」フォルダに、「main」フォルダと「logics」フォルダを作ります。

「main」フォルダには「Calc.java」を、「logics」フォルダには「CalcLogic.java」を入れる形ですね。

「Calc.java」と「CalcLogic.java」が、上記の図の位置に入ったら、「Calc.java」に

calcapp.logics.

を追加します。

別のパッケージにあるクラスを呼び出すためには、パッケージ名を指定しなければいけないためです。(「スッキリわかるJava入門」P233参照)

上記のコードを追加すると、以下のようになります。

【Calc.java】

package calcapp.main;
public class Calc {
	public static void main (String[] args) {
		int a = 10;
		int b = 2;
		int total = calcapp.logics.CalcLogic.tasu(a, b);
		int delta = calcapp.logics.CalcLogic.hiku(a, b);
		System.out.println("足すと" + total + "、引くと" + delta);
	}	
}

これでコンパイルを行うと、しっかりとコンパイルできます。

コンパイルを行う時、「java」フォルダから見た「Calc.java」の位置を指定します。

javac calcapp/main/Calc.java

階層は「/(スラッシュ)」で区切ります。

実行する時も

java calcapp/main/Calc

と入力して「Calc.class」を実行します。

これで、P230以降もコンパイルエラーが出ることなく、javaの勉強を進めることができます。

以上が、「Javaのpackage文でコンパイルエラーを修正する方法」でした。




まとめ

今回は『Javaのpackage文でエラーが出てコンパイルできない時の修正方法』というテーマでお送りしてきました。

「Javaのpackage文でエラーが出てコンパイルできない原因」は、

フォルダの階層が適切ではないため、「CalcLogic.java」をうまく読み込めていない

ことが原因でした。

「Javaのpackage文でコンパイルエラーを修正する方法」は、

フォルダの階層を適切な形にすること

でした。

コンパイルエラーの出ないフォルダ階層

このようなフォルダ階層にすることで、Javaのpackage文でコンパイルエラーを出さずにjavaの勉強を進めることができるようになります。

以上が『Javaのpackage文でエラーが出てコンパイルできない時の修正方法』でした。

今回も「スッキリわかるJava入門」で、僕が実際につまづいたところを解説してきました。

Javaやプログラミングについて、他にも分からないことがありましたら、お問い合わせまでご連絡ください。

以上、ネットショップコンサルタントの「たぶ」でした。

こちらの記事もおすすめです。

ロリポップのphpMyAdminでMySQLの文字化けを修正する方法

ロリポップのphpMyAdminでMySQLの文字化けを修正する方法

2019年9月12日
MySQLとは

MySQLとは

2019年2月7日
MySQLのGROUP BY句でエラーが出る原因と解決方法【基礎からのMySQL】

MySQLのGROUP BY句でエラーが出る原因と解決方法【基礎からのMySQL】

2019年2月3日
「MAMP」の「MySQLモニタ」にパスを通す方法

「MAMP」の「MySQLモニタ」にパスを通す方法

2019年1月16日

【プログラミングならTechAcademy】


【どこでも受けられるTECH::CAMP】


ABOUTこの記事をかいた人

通称:たぶ
30代中頃、東京都在住。
ネットショップコンサルタント。
EC-CUBE、ASP、ショッピングモールなど各種ネットショップでの売上UPが得意。
アパレル系のネットショップの売上を4倍に増やし、月商900万円、年商1億円を達成。
ネットショップ運営の数なら誰にも負けません。
最近、ポメラニアンが気になる。
炊きたての白米が何もよりも好き。