
No.4ベストアンサー
- 回答日時:
No.1,2のものです。
No.3の方が行っているようなことを私の方でも試してみましたが確かに実行前の段階で発生しますね。
実行前にクラスローディングされる段階でErrorとして(Exceptionではなく)発生するので。
Error:JavaVMからシステム経由で出力
Exception:実行時にでたエラーを出力
基本的には今回のケースのようにクラスをロストさせるのは無しなんでしょうね。私のほうでもいい勉強になりました。
No.3
- 回答日時:
こんにちは。
面白いので、私も試してみました。
class A
{
~main{
System.out.println("start main");
try{
B b = new B();
}
catch(){
System.out.println("error in main");
}
}
}
class B
{
//コンストラクタ
{
System.out.println("start B");
try{
C c = new C();
}
catch(){
System.out.println("error in B");
}
}
}
クラスCを削除した場合、クラスAのメインでキャッチされました。
(start Bのメッセージはでません)
クラスBを削除した場合、どこでもキャッチできませんでした。
(start mainのメッセージはでません)
推測ですが、インスタンスを生成するためクラスをロードする際、
そのクラスが使用する全クラスをチェックするのではないでしょうか?
ロード時のことなのでまだインスタンス化はされておらず、このような結果に
なったような気がします。
No.2
- 回答日時:
ちょっと補足いただいた内容がつかめないんですが、おそらくですけどコンパイル時存在しているクラスを実行時に削除して、そのクラスを生成する際にNoClassDefFoundErrorを発生させてそれをcatchするっていうことでしょうか?
参考までに
try{
DeleteClass dc = new DeleteClass();//削除したクラス
}catch(NoClassDefFoundError ncdfError){
ncdfError.printStackTrace();
}catch(Exception exception){
exception.printStackTrace();
}
こんな感じでインスタンス生成するところでtry~catchすればよろしいかと。
参考までに例外処理のURLです。
参考URL:http://www.softlab.is.tsukuba.ac.jp/~yama/java/j …
この回答への補足
ありがとうございます。
今抱えている問題は回答No.2の最初にお書きになっていることで問題無いです。
インスタンスする所をtry文で囲むのは一応挑戦したんですがどうも上手くいかないみたいです。コマンドラインから引数を与えているのですが引数の例外処理の前にこのエラーが出るようなのでインスタンスする前で例外が発生するのではと少し混乱しています。ソースの概要を短く記載するので参考にしていただけるとありがたいです。
class A{
~main{
引数のチェック
インスタンス化(メソッドの実行)
処理~
}
}
class B{
メソッド1
メソッド2
}
このような流れです。ファイルはA.javaの一つです。ここでB.classを意図的に削除させてから実行した時にでるエラーを捕まえたいです。なにか不明な点があればまたお返事いたします。
No.1
- 回答日時:
[NotClassDefFoundException]ではなく[NoClassDefFoundError]ですね。
考えられることとしてはこのクラスを生成する際にこのクラスが格納されているパッケージがimportされていないとかなんですけど。
ちょっとこのエラーが出た状態がわからないのではっきりとした答えが出せません。
できればそのソースを上げてください。
その上でtry~catch処理の部分を回答します。
この回答への補足
解答ありがとうございます。ソースをあげたいのですが結構長いソースなので全部をお見せすることは難しいです。インポートしているパッケージは
java.util.*
です。
最初に書き忘れてしまったのですが、今回問題になってい意図的にclassファイルを消しその上で発生するエラーを処理したいと言うものです。classファイルが最初に使用されるのは一般的にはどこなのでしょうか。
わかりにくい説明で申し訳ありませんがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- 消費者問題・詐欺 駐車場調べ隊というサイトで、会員登録してましたが 無料期間で退会するためサイトで申し込みしたところ 2 2023/06/03 23:22
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- フィギュア・ドール・ぬいぐるみ 余ったプライズ品の行方~ゲームセンターなどで勤務されている方へ 1 2022/11/22 13:14
- 英語 分離不定詞 1 2023/07/16 17:29
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラスの宣言でのメモリ使用サ...
-
Java「デフォルトのパッケージ...
-
クラス宣言とアクセス制御
-
NotClassDefFoundExceptionにつ...
-
superの使い方
-
重複エラーを解決するには
-
中学生です。 私は教室の黒板に...
-
クラスの利点について
-
Netscape 6.1/6.2 IE6(win)でAp...
-
eclipse でクラスに色
-
遺伝的アルゴリズムによる繰り...
-
「隣の芝生は青く見える」現象...
-
配列の重複する値とその個数を...
-
ドラクエの「復活の呪文」的な...
-
C++でのアップロードの方法(初...
-
VB.netのコンテナークラスとは...
-
Stringクラスは他のクラスとど...
-
JAVAにおけるパッケージとライ...
-
3年間同じクラスになる確率
-
Eclipseを入れたら、Swingは使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じクラスにならない確率を教...
-
そんなにお金がなくても年に1度...
-
河合塾のクラス分けについて
-
今回のクラス替え最悪でした、...
-
3年間同じクラスになる確率
-
java eclipse 型に解決できません
-
恋愛
-
同一パッケージにあるクラスが...
-
小学4年の頃、好きな同級生にス...
-
配列の重複する値とその個数を...
-
main()を持つクラスが2つ以上...
-
EclipseでJSPのコンパイルエラー
-
共通で使う関数を集めたクラス...
-
他クラスのすごくかっこいい同...
-
どこからも呼ばれていない無意...
-
中学生です。 私は教室の黒板に...
-
ネスカフェ エクセラ と UCCク...
-
dllと同じプロジェクトにする方法
-
「隣の芝生は青く見える」現象...
-
コンボボックスのマウスホイー...
おすすめ情報