1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エラー: メイン・クラス○○を検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: ○○ が表示されたときの対処表を苦しみながら説明する

Last updated at Posted at 2025-02-07

今回私は、First.javaファイルを作成した。
このファイルの中身は、
image.png

実行が成功した際には、コマンドプロンプト画面上に
「Javaを楽しもう!」
と表示される算段だ!

さあ、
javaファイルのコンパイルをして、「First.class」まではできた。

image.png

image.png

さあ、コマンド プロンプトで「java First」と入力!!
image.png

・・・ん?
あれ?文字間違えたかな?えーと、小文字でjava、スペース空けて、大文字のエフ、後は小文字でアイ、アール、エス、ティーっと。そしてエンターキーをターンッ!!
image.png

・・・

image.png

ぐわああああ!!
うまくいかない!「Javaを楽しもう!」という文字を表示させるだけなのに!!
このままではJavaを楽しめない!!!

なんとかこの第一関門を突破しなくては!!
ということで勇者Tanympusは原因究明と解決策探しの旅へと出発したのだった。

俺たちの戦いは始まったばかりだ!!

ーーーーーーーー続きーーーーーーーー

ちなみにEclipseで試しに動作確認をしたら、動いた。
image.png

何故コマンドプロンプトでは動かんのじゃあああ

システム環境変数を確認してみた。
JAVA_HOMEは、今回ダウンロードしたC:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot\になってるし、
PATHは、C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot\bin
になってるし、問題ないのではないか。。。

ぐぬぬ、今日のところはここまでか。

ーーーーーーーー続きーーーーーーーー

もしかしてローカルアカウントのユーザー環境変数も変えないといけないのかな。
ネットで調べてみたら、
グローバル変数と同名のローカル変数ではローカル変数が優先されるという事を目にした。
変えてみよう。
image.png

ほい
image.png

さあやってみよう
一回さっき作ったclassファイルを消して、
image.png

コマンドプロンプトでコンパイルして、
image.png

実行!
image.png

ぐわああああ!!!
関係ない記事に惑わされた!!ネットリテラシー!!!

「ピロリロリ~ン、テテテテッテッテッテ~、Tanympusはネットリテラシーが1あがった」

やかましいわ!!!!

ーーーーーーーー続きーーーーーーーー
調べてみた中で、今の所考えられるのは
CLASSPATHが通ってない?ということだ。

参考にしたwebサイトを残す。
ITMediaのCLASSPATH設定についての記事
https://atmarkit.itmedia.co.jp/fjava/onepoint/java/jv_clpath.html

前田俊行さんが2001/5/12執筆した記事によると、
「java -classpath <場所><実行するクラス名>」とするといい?
と書かれている。

image.png

いざ、やってみよう。

javaの後に、スペース、-classpathと書いて・・・
スペース、の後にC:\Java\1と書いて・・・
スペース、クラス名はFirstっと。そしてエンターキーをターンッ!!
image.png

ほわぁ!!!動いた!!!
前田さんありがとうございます!!!

ちなみにこの流れでjava Firstと打ってみると、
image.png

ぬうう、だめか。。。

ひとまず、CLASSPATHがキーワードだったことが分かった。
これから、要因の詳細を調べていく。
そして「java First」とだけ打って実行させたい!!

次回!Tanympus死す?デュエルスタンバイ!!!

ーーーーーーーー続きーーーーーーーー
不死鳥のようにファサぁ~っ!
昨日の続きをやっていこうと思う。
前述の参考サイトより、前田さんの記事によると、
image.png
との事なので、やってみる。

image.png

image.png

うーーん、
JVMが自動的にカレントディレクトリに指定する際、何かが起こっていて、クラスファイルを探せないということなのかなぁ。
とりあえずわからない事を調べつつ今回は3つまとめる。
①カレントディレクトリとは?
②クラスパスとは?
③CLASSPATHを設定するとどうなるか?

まとめた内容
①・・・
実行中のソフトウェアなどがストレージ(外部記憶装置)のファイルシステム中で現在位置として指示しているディレクトリの事。相対パスでファイルやディレクトリなどを指定する際の基準の位置となる。

②・・・
以下Oracle.comのサイトによると、クラスパスとは、Java実行環境がクラスおよび他のソースファイルを検索するパスのことらしい。
クラスパスの設定は、以下の2つの方法がある。
・JDKツールを呼び出すときに-classpathオプションをつける方法(推奨される方法)
・CLASSPATH環境変数を設定する方法
https://docs.oracle.com/javase/jp/1.5.0/tooldocs/solaris/classpath.html#:~:text=%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%91%E3%82%B9%E3%81%A8%E3%81%AF%E3%80%81Java,%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%82%88%E3%82%8A%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
また、今回の件に関係がありそうな文も参考サイトに書かれていた。
image.png

今日はここまで。また明日。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?