🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1395閲覧

java パッケージについて

kagome96

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/10/06 07:37

編集2019/10/06 07:49

以下のサイトに掲載されているjavaのパッケージについて
https://techacademy.jp/magazine/19042
実際に書いてみると、コンパイルエラーが発生してしまいます。
原因がわからないため、お助けいただけると助かります。


Main22.java:1: エラー: パッケージpackA.packBは存在しません
import packA.packB.KlassB;
^
Main22.java:2: エラー: パッケージpackA.packB.packCは存在しません
import packA.packB.packC.KlassC;
^
Main22.java:6: エラー: KlassAにアクセスできません
KlassA.print();
^
ソース・ファイル./KlassA.javaは不正です
ファイルにクラスKlassAが含まれていません
削除するか、ソース・パスの正しいサブディレクトリにあるかを確認してください。
Main22.java:7: エラー: シンボルを見つけられません
KlassB.print();
^
シンボル: 変数 KlassB
場所: クラス Main22
Main22.java:8: エラー: シンボルを見つけられません
KlassC.print();
^
シンボル: 変数 KlassC
場所: クラス Main22
エラー5個

「packA」フォルダにMain22.javaとKlassA.java、
「pacB」フォルダにKlassB.java、
「packC」フォルダにKlassC.javaを保存しています。

書いたコードが以下の通りです。

Main22.java

import packA.packB.KlassB; import packA.packB.packC.KlassC; public class Main22{ public static void main(String[] args){ KlassA.print(); KlassB.print(); KlassC.print(); } }

KlassA.java

package packA; public class KlassA{ public static void print(){ System.out.println("packA.KlassA"); } }

KlassB.java

package packA.packB; public class KlassB{ public static void print(){ System.out.println("packA.packB.KlassB"); } }

KlassC.java

package packA.packB.packC; public class KlassC{ public static void print(){ System.out.println("packA.packB.packC.KlassC"); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2019/10/06 07:42

パスはどうなっていますか?
kagome96

2019/10/06 07:45

デスクトップの直下にpackAを作ってしまっています。
guest

回答1

0

ベストアンサー

この構造だと、Main22.javaとKlassA.javaは同じpackAフォルダーの中に置かれていて、Main22.javaの冒頭には

java

1package packA;

が記述されている必要があると思います。それさえ改めれば動くのでは?


「packA」フォルダにMain22.javaとKlassA.java、
「pacB」フォルダにKlassB.java、
「packC」フォルダにKlassC.javaを保存しています。

とされていますが、これら3つのフォルダーの位置関係はどうなっているのでしょうか。packAフォルダーの中にpackBフォルダーがあり、さらにpackBフォルダーの中にpackCフォルダーがある必要がありますが、そうなっていますか?


こちらの環境はLinuxですが、下図のような構造でファイルを配置し、packAフォルダーの下でjavacコマンドおよびjavaコマンドを実行することで正常動作が確認できます。

$ tree . └── packA ├── KlassA.java ├── Main22.java └── packB ├── KlassB.java └── packC └── KlassC.java $ ls packA $ javac packA/Main22.java $ java packA.Main22 packA.KlassA packA.packB.KlassB packA.packB.packC.KlassC

質問のエラー文は、「どのフォルダー上でどういうコマンドを実行した結果か」という情報を明示するべきでしたね。多分、packAフォルダーの中に入ってjavac Main22.javaとコマンドを実行しているのではないでしょうか。それだと、コメントのようなエラーになると思います。

投稿2019/10/06 08:07

編集2019/10/10 14:07
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kagome96

2019/10/10 03:10

返信が遅くなりすみません、 ご回答ありがとうございます。 現在試さない環境にいるので、試してみてからまた返信します。
kagome96

2019/10/10 13:37

Main22.javaの先頭に、package packA; を追加しましたが、 同じような以下のエラーが発生してしまいました。 ーーーーーーーーーーーーーーーーーーーー Main22.java:2: エラー: パッケージpackA.packBは存在しません import packA.packB.KlassB; ^ Main22.java:3: エラー: パッケージpackA.packB.packCは存在しません import packA.packB.packC.KlassC; ^ Main22.java:7: エラー: シンボルを見つけられません KlassA.print(); ^ シンボル: 変数 KlassA 場所: クラス Main22 Main22.java:8: エラー: シンボルを見つけられません KlassB.print(); ^ シンボル: 変数 KlassB 場所: クラス Main22 Main22.java:9: エラー: シンボルを見つけられません KlassC.print(); ^ シンボル: 変数 KlassC 場所: クラス Main22 エラー5個 ーーーーーーーーーーーーーーーーーーー ご質問の、フォルダーの位置関係については、 packAの中にpackB、packBの中にpackCを入れています。
kagome96

2019/10/20 05:54

ご返信遅くなり申し訳ありません。 ご指摘の通り、packageを実行するのコマンドをjavac Main22.javaとしていました。 またpackAをカレントにしていたのがエラーの原因でした。 うまくいきました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問