初めて質問させていただきます。
Javaの実行中にNoClassDefFoundErrorが極稀に発生して困っています。
エラーは以下になります。
Exception in thread "Thread-12" java.lang.NoClassDefFoundError: パッケージ.Sample
at パッケージ.問題発生クラス.run(問題発生クラス.java:71)
1.問題発生クラス.java:71でパッケージ.SampleをNewしています。
2.エラー内容からNewする時にNoClassDefFoundErrorが発生しているようです。
ただし、NoClassDefFoundErrorは数万回に一回でるかでないか。
ネットでも調べましたがコンパイル字のNoClassDefFoundErrorしか見つかりませんでした。
知恵をお貸しいただけないでしょうか
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>継承しているクラスがなければ「NoClassDefFoundError」
>が投げられるという理解でよろしかったでしょうか
これは違います、それでも例外は投げられるでしょうが
クラスをロードしようとした時に、必要なクラスが無い
場合に投げられます、継承は関係ありません
以下流れを自分で実行すればわかります
--------------------------------------------------
package test;
public class Hello {
public void say() {
System.out.println("Hello");
}
}
--------------------------------------------------
package test;
public class Test {
public static void main(String args[]) {
Hello h = new Hello();
h.say();
}
}
--------------------------------------------------
これを適当にコンパイルして、実行します
java test.Test
とすれば当然に Hello と出力されますが
test/Hello.class を削除してから実行すれば
java.lang.NoClassDefFoundError を投げます
継承していても、していなくても
ロードするべきクラスがなければ例外です
パスを通してコンパイルしたけど、実行時には
パスが通って無いなど色々です
No.2
- 回答日時:
困った時の「APIドキュメント」。
とりあえずは覗いてみる。java.lang
クラス NoClassDefFoundError
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
案の定、あのいつもの紫色のトーンで何が何だかもう。
ただ、「ClassLoader インスタンス」という言葉を発見。すかさず、googleにて[NoClassDefFoundError ClassLoader Java]でググってみる。
下の方でやっとIBMのサイトを発見。
developerWork > Java technology >
クラス・ローディング問題の神秘を解く 第2回: クラス・ローディングに関する基本的な例外
クラス・ローディングに関する単純な問題と難問を詳しく調べる
http://www-06.ibm.com/jp/developerworks/java/060 …
上記のサイトにて、IBM Hursley Labsの方々が以下のように述べています。
「(前略)クラスAはクラスBを継承しています。そのためクラスAがロードされると、クラス・ローダーは暗黙的にクラスBをロードします。クラスBは存在しないため、NoClassDefFoundErrorが投げられます。」
この回答への補足
choconamacream様
回答ありがとうございます。
http://www-06.ibm.com/jp/developerworks/java/060 …
を読みました。
継承しているクラスがなければ「NoClassDefFoundError」が投げられるという理解でよろしかったでしょうか
上記の理解でよければ毎回エラーが投げられると思います。
No.1
- 回答日時:
ごくまれに・・・っていうのがなぞですよね。
。NoClassDefFoundError は、コンパイル時にはあったけど実行しようとしたら消えた場合にも発生するようです。
http://blog.goo.ne.jp/evergreen_1978/e/a04acf1cc …
一応、googleで[実行中 NoClassDefFoundError]で調べてみました。
複数の人で同じサーバ環境を使ってデバッグをしていて、
たまに他の人が使っているかどうかの確認もせずモジュールを置き換える人がいる
・・・って所ではないでしょうか。
この回答への補足
PED02744様
回答ありがとうございます。
「コンパイル時にはあったけど実行しようとしたら消えた場合」というのは
実行しようとしたらクラスファイルがなかったと言うことでよかったでしょうか?
Javaを実行しているサーバは自分しか使えない環境ですので
他の人が置き換えるというのは起こらないです。
ごくまれにってなんなんでしょうね。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 15:14
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- デスクトップパソコン 通話が遅延します 1 2023/06/18 02:36
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- オンラインゲーム とても急いでいます。Minecraft Java版についてです。 MinecraftのJava版でマ 1 2023/03/15 21:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オブジェクト指向プログラミン...
-
同一パッケージにあるクラスが...
-
配列の重複する値とその個数を...
-
グローバルIPとプライベートIP...
-
java eclipse 型に解決できません
-
数学の計算問題。 3年間同じク...
-
河合塾のクラス分けについて
-
UMLのクラス図はmain()も含むん...
-
USBのデバイスクラスの違いにつ...
-
A・B・Cクラスとは?
-
共通で使う関数を集めたクラス...
-
IPアドレス 105.179.244.135の...
-
3年間同じクラスになる確率
-
命名規約は連番でいいのか?
-
SDカードについて
-
main()を持つクラスが2つ以上...
-
同じクラスにならない確率を教...
-
SQLです教えてくださいお願いし...
-
構造体とクラスの違い
-
dllと同じプロジェクトにする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
同一パッケージにあるクラスが...
-
私はクラスLINEにまだ入れてな...
-
老い先短い ジジィ が ふと 思う...
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
数学の計算問題。 3年間同じク...
-
クラス見てから 女の子5人 ネタ...
-
javaのコンパイルができません...
-
1 つのヘッダファイルに複数の...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
おすすめ情報