質問するログイン新規登録

Q&A

解決済

3回答

967閲覧

JAVA/パッケージでのエラーについて

maty.0113

総合スコア1

Java

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

0グッド

0クリップ

投稿2023/06/26 06:48

編集2023/06/26 08:07

0

0

素人質問で失礼致します。
同じ質問が多数投稿されているかと存じますが、回答を実践してみても解決が得られないため、
自分でも投稿させて頂きます。
スッキリかわるJAVA入門第三版 p236 コード6-7の部分です。
使用しているのはVisual Studio Codeです。

まずフォルダですが、ファイルのスクショを添付いたします。イメージ説明(https://ddjkaamml8q8x.cloudfront.net/questions/2023-06-26/694b4be2-c03a-4187-b780-f76c31a4a312.png)
自分のユーザーフォルダに
[workspase]→[6-7]→[java]→[calcapp]→[calcapp.logics][calcapp.main][main]
そして、[calcpp.logics]というフォルダの中に、CalcLogic.java、
[calcapp.main]というフォルダの中に、Calc.java、
[Main]というフォルダの中に、Calc.java(calapp.mainと内容は違います)
が入っています。
[Main]でも同じ失敗をしていて、同じ階層にあるのに何が悪いのだろうと自問自答しています。
ちなみに、同じ[calcapp]というフォルダに素のまま(フォルダに格納しないまま)CalcLogic.javaとCalc.java(main)のものを一緒に入れて実行したときは成功しました。

【試したこと】
・フォルダを同じ階層に入れる。フォルダを分ける、一緒にする、両方試しました。
Calcの分はタイトルが被ってしまい出来ていないのですが、フォルダを分けなければうまくいきました。
・下記〈〉つけてみる。
・他調べて時間を費やしてしまいました……。

下記がソースコードです。ソースコードはそのままコピペをしています。イメージ説明
ターミナルをつけるのを失念していましたので改めて添付いたします。
イメージ説明

<>間はつけて実践しても外して実践しても失敗したものです。
本には記載されておりません。

<package calcapp.main;
import calcapp.calcapp.logics;>

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);
}
}

この状態でコンパイルすると、
.\Calc.java:2: エラー:パッケージcalcapp.logicsは存在しません
import calcapp.calcapp.logics;
.\Calc.java:7: エラー:パッケージcalcapp.logicsは存在しません
int total = calcapp.logics.CalcLogic.tasu(a, b);
.\Calc.java:8: エラーパッケージcalcapp.logicsは存在しません。
int delta = calcapp.logics.CalcLogic.hiku(a, b);
というエラーが出ます。

どのような対処をすればエラーが出ず、コンパイル出来るようになるでしょうか。
(コンパイル後実行できないことは了承済です)

何卒、お知恵をお借りできればと存じます。
わたくしには現在、頼れるものもないため、インターネットでの質問が頼りです。
すみません、最初はAIのみに公開されると思い、雑に書いてしまいました。
ご覧になった方、申し訳ございません。
是非、宜しくお願い致します。

追記:やってほしいことしか書かれていないとの修正依頼ありがとうございます。
こちらでのお礼の方法が(お礼返信以外で)何かあるのでしたらご教授頂ければ幸いです。
追記2:私の記述が足りなかったとのこと、誠に恥ずかしく思います。
既に半日ほど検索しているので、疲れているのかもしれません。
今から少し休ませて頂きますので、返信が遅くなるかもしれません。教えて頂く身として申し訳ございません。

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

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

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

jimbe

2023/06/26 07:34 編集

>同じ質問が多数投稿されているかと存じますが、回答を実践してみても解決が得られない どのような回答からどのようなことをしたのかを一応「試したこと」としてご提示ください。 コードや(画面に表示された)エラー等)は、コードのマークダウン(```の行で前後を囲む)を用いてそのままコピペしてください。 画像は、画像のマークダウンをそのまま利用してください。 「![~](~)」の「![~]」の部分を削除してしまうと画像のマークダウンになりません。 [] の中には画像の説明を書いてください。 >この状態でコンパイルすると どのような操作・入力をしたのかも教えてください。
m.ts10806

2023/06/26 07:30 編集

>急募 本当に急ぎでしたら赤の他人と精度に差のあるAI回答(質問初手で全て決まり修正されることがない回答) で構成された場所で聞くのはかなり非効率と思いますし、ただの煽り文句です。
maty.0113

2023/06/26 07:42

jimbe様 ご回答、ご教授いただきありがとうございます。 私なりに追記してみたのですがいかがでしょうか……。
maty.0113

2023/06/26 07:43

m.ts10806様 ご回答ありがとうございます。とは言え、このような場でしか解決出来ない次第で……。ご提案、誠にありがとうございました。
m.ts10806

2023/06/26 07:52 編集

ひとまず、急募を消しましょう。 本当に急ぎならお金払って業者にやってもらうのが早く確実ですから(赤の他人ゆえそういう見方をします) 赤の他人に聞くのでしたら個人の事情や要件に無関係の内容を本文に書くのは極力避けられたほうが良いです。 また、課題や書籍のものならそれまで学んできたことで解決可能なはずなので、やってきたことを見直す のが最も最効率です。
maty.0113

2023/06/26 07:54

m.ts10806様 そのようにいたしました。 質問単品で今すぐ教えてくださる業者があるのですか? あれば教えてほしいです。 御諫言心に刻みます。ありがとうござます。
m.ts10806

2023/06/26 08:10 編集

とりあえずならクラウドワークスとか。 まあ、やはり「見直す」のが確実でしょう。ここで業者や他人に頼って身につくものではないです。 書籍のものなら理解不足とか思い込みで [書籍のとおり書いたつもり]というのは幾らでも有りうることですから。 例えばコンピュータにとってはaとAは別物。(言語や機能によっては同一と扱うものもあるけどそれだと基礎は身につかない)
maty.0113

2023/06/26 08:11

なるほど、クラウドワークスですね。検索してみます。 つもり、はないと思いたいのですが……笑(半日調べたり、見比べたりしたので……) 落ち着いたらもう一度書籍を見返してみます。 ご回答いただきありがとうございました。
quickquip

2023/06/26 08:17

p258まで読み進めてますか? p236の段階では「コンパイルは通るが実行できない」という状態のコードです。そこまで読み進めてから戻ってきている、という質問でしょうか?
maty.0113

2023/06/26 08:20

quickquip様 ご回答ありがとうございます。 コンパイルすら通らないため、不思議に思い質問させていただきました。
quickquip

2023/06/26 08:44 編集

その章の終わりまで読み進めてるのでしょうか? (2版を見てたのでページ番号間違ってました。「その章の終わり」に訂正します)
maty.0113

2023/06/26 08:44

読み進めていますが、コード6-7に、この状態ではコンパイルは出来るが実行はできない。詳細は後ほど。という旨が書かれておりましたので、コンパイルできるはず、というつもりでおりました。 内容を読み違えておりましたら申し訳ございません。 具体的にp258のどのあたりでしょうか?
maty.0113

2023/06/26 08:49

版が異なると分かりづらいかと思いますが、終盤というとAPIのあたりでしょうか? 申し訳ございません、どの辺りか検討つきませんが、現在は6-7が「コンパイルまでできればOKです」と記載されているため、コンパイル出来ないのは問題だと思い、質問している次第です。
guest

回答3

0

ベストアンサー

同じ階層にあるのに何が悪いのだろう

パッケージ名が "." で区切られた複数段になる場合、各段がフォルダでなければなりません。

calcapp.logics というパッケージは calcapp/logics というフォルダ階層に対応するのであって "calapp.logics" というフォルダに対応するのではありません。

パッケージを使用する場合、クラスの指定は全てパッケージのフォルダのルート位置で行わなければなりません。

C:/Users/chisa/workspase/6-7/java フォルダ下に各パッケージのクラスがあるのであれば、C:/Users/chisa/workspase/6-7/java をカレントフォルダとして java コマンドを使用する必要があります。


例えば H:\workspace\6-7\java 下に各パッケージ・ファイルを配置し、コマンドプロンプトで一連の操作をすると以下の感じになります。
ソースファイルは
H:\workspace\6-7\java\calcapp\main\Calc.java
H:\workspace\6-7\java\calcapp\logics\CalcLogic.java
にあり、
javac / java コマンドは H:\workspace\6-7\java をカレントフォルダとして行っていることに注意してください。
※ CalcLogic.java の処理がダミーとして常に 0 を返しているので実行結果は全て 0 になっています。

コマンドプロンプト

H:\workspace\6-7\java>dir calcapp\main ドライブ H のボリューム ラベルは ボリューム です ボリューム シリアル番号は C283-15F8 です H:\workspace\6-7\java\calcapp\main のディレクトリ 2023/06/26 17:14 <DIR> . 2023/06/26 17:14 <DIR> .. 2023/06/26 17:14 296 Calc.java 2 個のファイル 1,257 バイト 2 個のディレクトリ 149,663,547,392 バイトの空き領域 H:\workspace\6-7\java>type calcapp\main\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("tasu " + total + ", hiku " + delta); } } H:\workspace\6-7\java>dir calcapp\logics ドライブ H のボリューム ラベルは ボリューム です ボリューム シリアル番号は C283-15F8 です H:\workspace\6-7\java\calcapp\logics のディレクトリ 2023/06/26 17:14 <DIR> . 2023/06/26 17:14 <DIR> .. 2023/06/26 17:09 164 CalcLogic.java 2 個のファイル 473 バイト 2 個のディレクトリ 149,663,547,392 バイトの空き領域 H:\workspace\6-7\java>type calcapp\logics\CalcLogic.java package calcapp.logics; public class CalcLogic { public static int tasu(int a, int b) { return 0; } public static int hiku(int a, int b) { return 0; } } H:\workspace\6-7\java>javac calcapp\main\Calc.java H:\workspace\6-7\java>java calcapp.main.Calc tasu 0, hiku 0 H:\workspace\6-7\java>

投稿2023/06/26 07:43

編集2023/06/26 08:34
jimbe

総合スコア13450

maty.0113

2023/06/26 07:56

ということは、calcappのフォルダを一個消すということでしょうか? ソースコードは、int total =C:/Users/chisa/workspase/6-7/java.CalcLogic.tasu(a, b); ということになるのでしょうか……? 本当に素人で申し訳ございません。
maty.0113

2023/06/26 08:28

【H:\workspace\6-7\java 下に各ファイルを配置したとします。】が理解できておりません……申し訳ございません。 フォルダ「java」の中にすべての「.java」ファイルを入れるということですか? となると同じタイトルのファイルがあると困るのですが……。 お手数をおかけして申し訳ありません。 本当にお金を払いたいくらいです……。
jimbe

2023/06/26 08:39 編集

こちらの環境で "chisa" というユーザを作りたくありませんので、例の為に違うフォルダを使いますという意味です。 "H:\workspace\6-7\java" を "C:\Users\chisa\workspace\6-7\java" と読み替えてください。
maty.0113

2023/06/26 08:43

あ、はい。そこは分かるのですが……6-7\java下に各ファイルを配置したというのはどう言う意味でしょうか? そのまま各「.java」ファイルを置くということですか?となると同じタイトルのファイルに障りがあるのですが……。という意味でした。 上手く伝わらず申し訳ございません。
jimbe

2023/06/26 08:49 編集

パッケージの階層構造をフォルダの構造としてください。 そちらの環境での修正方法を直に書いたほうが良いでしょうか。 Calc.java の入っているフォルダ名を calcapp.main から main に変えてください。 CalcLogic.java の入っているフォルダ名を calcapp.logics から logics に変えてください。 それによって両ファイルは C:\Users\chisa\workspace\6-7\java\calcapp\main\Calc.java C:\Users\chisa\workspace\6-7\java\calcapp\logics\CalcLogic.java となるはずです。 そして、コンパイルは C:\Users\chisa\workspace\6-7\java をカレントフォルダとして javac calcapp\main\Calc.java 実行は java calcapp.main.Calc としてください。
maty.0113

2023/06/26 09:03

初歩質問で申し訳ございません。 カレントフォルダとはなんでしょうか……?今まで習ったこともなく、JAVAでは検索しても要を得なかったため……。申し訳ございません。 また、javaのフォルダ内に、上記main,logics,subject(元main)を入れればよろしく、 ソースコードの変更はなしでよろしいのでしょうか?
jimbe

2023/06/26 09:27 編集

>カレントフォルダとは 現在のフォルダ階層内の位置、 cd で移動したりする現在位置のことです。 「C:\Users\chisa\workspace\6-7\java をカレントフォルダ」という場合は cd C:\Users\chisa\workspace\6-7\java を実行した時の位置です。
maty.0113

2023/06/28 08:19

なるほど……わかりました! 先ほどコンパイルに成功いたしました! 懇切丁寧に教えて頂き誠にありがとうございました。
jimbe

2023/06/28 11:06

なんとかお伝え出来たようで良かったです。 同じ画面を見ながら横で説明出来れば恐らく10分20分で解決できたと思うのですが…そのような身近で分かる人が見つかることを願っています。
guest

0

この回答はGPT-4による自動生成回答です

このエラーは、calcapp.logics パッケージが見つからないことを示しています。以下の手順で解決できる可能性があります。

  1. パッケージ名のスペルミスを確認してください。
  2. calcapp.logics パッケージが正しいディレクトリ構造にあることを確認してください。例えば、calcapp/logics ディレクトリにあるべきです。
  3. calcapp.logics パッケージ内に CalcLogic クラスが存在することを確認してください。

markdown

1- パッケージ名のスペルミスを確認 2- 正しいディレクトリ構造を確認 3- `CalcLogic` クラスの存在を確認

投稿2023/06/26 06:48

teratail-ai

Powered by GPT-4

0

3版が手元にないので食い違ってる可能性がありますが、説明の流れが一緒なら、その時点ではディレクトリを作れとか、ファイルを移動せよ、とか一切出てきていないんじゃないでしょうか?
ファイルの中身を書き換えてみよ、としか書かれてないはずです。

C:\Users\chisa\workspace\6-7
にCalc.javaとCalcLogic.javaを置いた状態で単に中身を書き換えて

javac Calc.java CalacLogic.java

せよという意図だと思います。
(そのように書いてはありませんが書かれてないことを勝手にやったりしなければそうなると思われます。なのでそのような意図なのだろう、という話です)

これだとコンパイルは通るはずです。
ただし、classファイルがそこにできるので実行はできません。その説明があとに始まります。

投稿2023/06/26 08:57

編集2023/06/26 08:57
quickquip

総合スコア11357

quickquip

2023/06/26 10:22

Javaの開発上、筋のよい配置の仕方はすでに回答があるため省略で、補足としての回答です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問