質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

2回答

2491閲覧

Javaパッケージのエラー

K.M.PEANUTS

総合スコア40

Java

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

0グッド

1クリップ

投稿2021/06/18 05:11

編集2021/06/18 09:01

java

1import animal.*; 2import animal.*; 3import animal.zoo.Zoo; 4 5public class Main { 6 public static void main (String[] args) { 7 8 Cat cat = new Cat(); 9 Dog dog = new Dog(); 10 11 Zoo zoo = new Zoo(); 12 zoo.add(cat); 13 zoo.add(dog); 14 System.out.println(zoo.say()); 15 16 } 17}

java

1package animal; 2 3public class Cat extends Mammals { 4 public String say() { 5 return "Meow"; 6 } 7}

java

1package animal; 2 3public class Dog extends Mammals { 4 public String say() { 5 return "Bow wow"; 6 } 7} 8

java

1package animal; 2 3public abstract class Mammals { 4 5 public abstract String say(); 6 7 public String sleep() { 8 return "Sleeping"; 9 } 10}

java

1package animal.zoo; 2import animal.Mammals; 3 4public class Zoo { 5 Mammals[] mam = new Mammals[100]; 6 int i = 0; 7 UpdateListener up; 8 9 public void add(Mammals m) { 10 mam[i] = m; 11 i++; 12 if(this.up != null) 13 up.update(m); 14 } 15 16 public String say() { 17 String says = ""; 18 for(int j=0; j<i; j++) { 19 says += mam[j].say(); 20 } 21 return says; 22 } 23 24 public void setUpdateListener(UpdateListener u) { 25 this.up = u; 26 } 27} 28

java

1package animal.zoo; 2import animal.Mammals; 3 4public interface UpdateListener { 5 public void update(Mammals m); 6}

上記のコードで、Dog.java、Cat.java、Mammlals.Javaで「The declared package "animal" does not match the expected package ""」というエラーが出てきます。
原因わかる方いたら教えてください。
ちなみに、コンパイル段階ではなく、エディタに記述段階で波線が引かれてこのエラ〜メッセージが出てきます。
Javaディレクトリの中にDog.java、Cat.java、Mammlals.Javaそしてzooディレクトリが入っていて、zooディレクトリの中にZoo.java、UpdateListener.javaが入っています。
イメージ説明
イメージ説明
イメージ説明

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

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

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

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

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

hoshi-takanori

2021/06/18 05:31

どうやってコンパイルしてますか? (animal ディレクトリの中で javac してるとか?)
K.M.PEANUTS

2021/06/18 05:38

javaディレクトリでコンパイルしてます。animalディレクトリはjavaディレクトリの中に入っています。 ちなみにこのエラーは、コンパイルする前にエディタ(VScode)上で波線が引かれて、カーソルを合わせると表示されるメッセージです。
m.ts10806

2021/06/18 05:41

文章説明より画面キャプチャとコード全体提示されたほうが良いかと思います。百聞は一見にしかず
guest

回答2

0

VSCodeでワークスペースを利用している前提です(ファイル メニューにワークスペースを閉じる があれば使っていると判断できます)

java
|- animal
|- Test.java

という構成だとして
0. VScodeのワークスペースからanimalフォルダを右クリックして「ワークスペースからフォルダを削除」を選択
0. 「ファイル」-「フォルダをワークスペースに追加」でjavaフォルダを追加。
0. 念のためTest.javaを閉じて開きなおす。
0. コマンドパレットでreload Windowを実行。
これで波線は消えていると思います。

現象の再現ですが、
ワークスペースもフォルダも開いてない状態の素のVSCodeから
package 文の記載がない状態のanimal\Test.javaを開く。
package animal;
を追記すると波線が表示されました。
ファイルを上書き保存してreload windowかVSCodeの開きなおしで破線が消えました。

ワークスペースもフォルダも開いてない状態の素のVScodeから
package 文の記載があるanimal\Test.javaを開くと、破線は表示されません。

いまいちはっきりしませんが、プロジェクトを利用せず、ワークスペースだけを利用する際はパッケージの基準となるフォルダ(java)をワークスペースに追加して利用するのがよいかと思います。

投稿2021/06/18 09:11

編集2021/06/18 09:12
Crimson_Tide

総合スコア509

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

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

0

宣言されたパッケージ「animal」が、期待されるパッケージ「""」と一致しません。
とのことらしいですから、
書いている物がanimalパッケージ内に入ってないのでは、としか言えないです。

予想回答

恐らく、デフォルト・パッケージ(パッケージ指定していないと作られるパッケージ。使用は
非推奨。)
に、各ファイルが入っているので、animalパッケージを作成していないなら作成して、
それぞれのファイルをanimalパッケージ配下に移動させてください。

投稿2021/06/18 05:17

編集2021/06/18 06:43
K_3578

総合スコア1282

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

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

K.M.PEANUTS

2021/06/18 05:27

animalパッケージ内に入っていないとはどういうことですか? package animal; によってanimalパッケージに入れるんじゃないんですか?
K_3578

2021/06/18 05:32

そもそもこのpackage animal;は何というクラスに書いてるパッケージ宣言なのかという話です。 仮にTest.javaだとして、 現在はanimalというパッケージ下ではなく、""というパッケージ下に配置されているので このエラーが出ているのです。
K_3578

2021/06/18 05:40

多分説明するより階層がわかるスクショとか追記してくれた方が早いと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問