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

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

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

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

Q&A

解決済

2回答

2112閲覧

フォルダ内に.classファイルを置いても、.javaファイルがないとエラー: メイン・クラス[クラス名]を検出およびロードできませんでした となる。

HelloJavaWorld

総合スコア0

Java

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

0グッド

0クリップ

投稿2020/06/23 20:40

編集2020/06/23 21:07

前提・実現したいこと

すっきりわかるJava入門という本に沿ってJavaを独学しています。
現在パッケージと実際のフォルダ階層についての部分について学んでいるのですが、コマンドプロンプトよりjavaを実行すると下記のようなエラーになり実行することができません。

●フォルダの構造
ーーーーーーーーー
work/(クラスパスのフォルダ)
└calcapp/
├main/
│ └Calc.class(calcapp.mainパッケージ)
└logics/
└CalcLogic.class(calcapp.logicsパッケージ)

●エラー
ーーーーーーーーー
c:\dev>java calcapp.main.Calc
エラー: メイン・クラスcalcapp.main.Calcを検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: calcapp.main.Calc

試したこと

試しに.javaファイルも各フォルダに置いてみたら実行でき、正常に表示されました。

●フォルダの構造を下記に変更
ーーーーーーーーー
work/(クラスパスのフォルダ)
└calcapp/
├main/
│ ├Calc.java (←コンパイル前の.javaファイルを新たに配置)
│ └Calc.class(calcapp.mainパッケージ)
└logics/
│ ├CalcLogic.java (←コンパイル前の.javaファイルを新たに配置)
└CalcLogic.class(calcapp.logicsパッケージ)

私が本を読んだ限りでは.classファイルだけをコピーして置けばいいという解釈だったのですが、私の理解不足なのでしょうか。
色々調べてみたのですが、同じような件について見つけられずに困っています。
おそらくかなり初歩的な質問だとは思いますが、よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

同じPCに AdoptOpenJDK と pleadis が入っており、今は本に沿ってAdoptOpenJDKにて開発をしています。

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

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

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

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

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

m.ts10806

2020/06/23 20:51

.class まで指定しても実行できませんか?
HelloJavaWorld

2020/06/23 21:04

ありがとうございます。 今.classまで指定して実行してみましたが、同じエラーになってしまいました。 綴りなども何度も見直しているのですが、.javaファイルを置くと実行できるので、混乱しています。 ありがとうございます。
quickquip

2020/06/23 23:08

フォルダの構造を書いている部分、空白が潰れて読めなくなっていませんか?
quickquip

2020/06/24 02:42 編集

エラー のところは c:\dev と書いていますがフォルダの構造は work/ と書いてあります。 すくなくとも一方は信用できない情報になっています(CLASSPATHが提示されていればそれでいいのですが)。
HelloJavaWorld

2020/06/24 04:58

quiqui様、m.ts10806様、ご丁寧に考えていただいてありがとうございました。 quiqui様のご指摘の通りフォルダ構造については本の物を書いていました。実際のクラスパスについてははc:\dev\javaだったのに、分かっていたはずなのに一つ上のディレクトリc:\devから実行してしまい出来なかったようです! 本当に初歩的なミスでお恥ずかしい限りです。 ちゃんとエラーメッセージをじっくり読まないとダメですね! いい勉強になりました。 お力添えでなんとか解決することができて本当に助かりました! ありがとうございました。
guest

回答2

0

実行ディレクトりで ls -l ./calcapp/main/Calc.class を実行してファイルがありますか?
ファイルのパーミッションは読める属性になっていますか?
ソースコードに package calcapp.main を書いてありますか?
ソースコード内のクラス定義は public class Calc になっていますか?
ソースコード内のmainメソッド定義は public static void main(String[] args) { になっていますか?

投稿2020/06/24 00:20

編集2020/06/24 03:58
shiracamus

総合スコア5406

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

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

HelloJavaWorld

2020/06/24 04:59

色々とチェック事項を書いていただいて、ありがとうございます。 実際はクラスパスを間違えているというとても初歩的なミスでした! 今後エラーが出た場合は教えていただいたようにファイルがあるか、パーミッション、パッケージ確認などしていきたいと思います。 ありがとうございました。
guest

0

自己解決

quiqui様のご指摘の通りフォルダ構造については本の物を書いていました。実際のクラスパスについてははc:\dev\javaだったのに、分かっていたはずなのに一つ上のディレクトリc:\devから実行してしまい出来なかったようです!
本当に初歩的なミスでお恥ずかしい限りです。
ちゃんとエラーメッセージをじっくり読まないとダメですね!
いい勉強になりました。
お力添えでなんとか解決することができて本当に助かりました!
ありがとうございました。

投稿2020/06/24 05:00

HelloJavaWorld

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問