Javaの初心者がException in thread "main" java.lang.NoClassDefFoundError:エラーについて質問

このQ&Aのポイント
  • Javaの初心者が他の人が作ったプログラムを実行しようとした際にException in thread "main" java.lang.NoClassDefFoundError:エラーが発生しました。
  • エラーメッセージの原因は、ファイルのクラスパスの指定が間違っている可能性があります。
  • bcel-5.1.jarファイルをコードと同じディレクトリに置いても解決しないようです。
回答を見る
  • ベストアンサー

Exception in thread "main" java.…でも。

Javaの初心者です。 仕事で他の方が作ったプログラムをいじることになりました。 あるclassファイルを実行しようとしたところ、javaコマンドで実行しようとしたところ、タイトルにあるように、Exception in thread "main" java.lang.NoClassDefFoundError:というエラーメッセジーが出ました。 いろいろ調べた結果、「:」以降に出てくる名前のクラスが見つからず、大半の場合は、CLASSPATHの指定がされていなかったり、まちがっていることが分かりました。 ただ、今回、表示されたのは、こんなクラス名なんです。 org/apache/bcel/generic/ATHROW bcel-5.1.jarというファイルはあるのですが、これをどこかに置いたら解決するものなのでしょうか? ためしに、実行しようとしたclassファイルと同じディレクトリに置いてましたが、何の効果もありませんでした。 もしお分かりになる方がいらっしゃいましたら、よろしくお願い致します。

  • Java
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.1

CLASSPATHにそのjarファイル(のフルパス)を追加してください。 jarファイルの中には、classファイルが入っています。 通常はCLASSPATHには、classファイルのあるディレクトリを指定しますが、 jarファイルに入っているclassファイルを呼び出したい場合は jarファイルそのものをCLASSPATHに追加します。

question01
質問者

お礼

ご返答、ありがとうございました。 先ほど、jarを開いたところ、該当するクラスがありましたので、指定したところ、うまく行きました。 ありがとうございます。

関連するQ&A

  • Exception in thread "main" java.lang.NoClassDefFoundError: Hello

    Javaでコンパイルは通るのですが、実行すると。 Exception in thread "main" java.lang.NoClassDefFoundError:Hello が出ます。 色々調べて、「java -classpath . Hello」または「set classpath=.;%classpath%」とすると実行できることが分かりました。 以前は、このような入力をしなくても実行できたのですが、何が原因なのでしょうか? また、この「Classpath」とは何ですか? 環境設定をするとコマンドラインからの実行ファイル名を入力するだけで実行できる(あってるのかな?)事は分かりますが、これは何なのでしょうか?環境設定とは異なる話なのでしょうか?

  • Exception in thread "main" java.lang.NoClassDefFoundError: helloworldで困っています

    Exception in thread "main" java.lang.NoClassDefFoundError: helloworldと出てJAVAが実行できません。どうしたらよいのでしょうか。以前もこういう質問をしたのですが、またなってしまいました。 CLASSPATHの設定とかもしてみようといろいろと試行錯誤したのですが、だめでした。どういう設定にすればよいかもわかりません。 どうにかして、 java HelloWorld で実行できるようになりませんか? JAVAのSDKをインストールした場所は C:\j2sdk1.4.0 です。コンパイルはできます。 OSはWindowsXPです。初心者ですが、どうかよろしくお願いします。

  • javaの実行環境

    javaの勉強をしようと思い、以下のhelloworldコードを書いてみました。 public class HelloWorld { public static void main(String[] args) { System.out.print("Hello World\n"); } } それを、以下のようにlinux環境(ubuntu 10.10)でコンパイル実行しようとしたのですが、 javac HelloWorld.java java HelloWorld.class Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。そこで色々調べて jar cvmf manifest.mf test HelloWorld.class とjarファイルを作成して実行したところ、適切に"Hello World"が表示されました。 (manifest.mfの中身は"Main-Class: HelloWorld"1行だけです。) その後、このjarファイルをwindows環境に持っていって実行したのですが、 Exception in thread "main" java.lang.NoClassDefFoundError: ・・・ と怒られてしまいました。 linux環境で、"echo $CLASSPATH"を実行しても何も表示されず、CLASSPATHはどこにも通っていないようです。 また、windows環境のDOS画面にてSETを実行し、環境変数を表示させてもCLASSPATHはありませんでした。(javaはインストール済みです。) で、質問です。 1)なぜjarにすると実行でき、classファイルのままでは実行出来なかったのでしょうか? 2)windows環境で、CLASSPATHを設定したほうが良いのでしょうか?設定する場合は、prgramfiles\java\binで良いのでしょうか? 以上、長くなり申し訳ないのですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Exception in thread

    数日前にjavaの勉強をはじめました。 javacによって、classファイルは作成できました。 ファイルの中身は、 class Example1 {public static void main(String args[]) {System.out.println("This is the output from Example1");}}です。 環境変数のPATHはいじらずに、フルパスで作業しています。 classファイルは、C:\Java\jdk1.5.0\bin\exampleの中に保存されています。 java.exeは、C:\Java\jdk1.5.0\binな中にあります。 javaを実行しようとして、C:\Java\jdk1.5.0\bin>java C:\Java\jdk1.5.0\bin\example\Example と入力したところ Exception in thread "main" java.lang.NoClassDefFoundError: C:\Java\jdk1.5.0\bin\example\Exampleというエラーがでてしまいました。 原因がわかる方、教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  •  Exception in thread "main" java.la

     Exception in thread "main" java.lang.StackOverflowError というエラーが出ます  moji()にtestという変数をいれてやり、mainから、書かそうとしていますが、  Exception in thread "main" java.lang.StackOverflowError というエラーが出ますが、何故かわかりません。  宜しくお願いします。 ************************************************************ public class ArgsTest2 { public static void main(String args[]) { moji(); } public static void moji() { String[] test = {"abcde","fghij"}; main(test); } }

    • ベストアンサー
    • Java
  • Exception in thread "main" java.lang.VerifyError:

    JAVAをやり始めて間もないものですが、プログラムの実行を行うと下記エラーが発生してしまいます。 【エラー内容】 Exception in thread "main"java.lang.VerifyError: (class: KouH, method: doSyori signature: ()Z) Incompatible object argument for function call at FinGiuse.main(FinGiuse.java:53) エラー内容の意味が全く分かりません。 ご存知の方、教えてください。お願いします。

  • Java実行でのエラー

    Javaを勉強したいのでインストールしてみたところまでは良かったのですがコンパイルを通した後に実行すると動きません。 CLASSPATH:c:\Java JavaファイルがJavaフォルダの中に入っている状態です。 【手順】 c:\Java>java HelloJava.java ↓コンパイル成功 c:\Java>java HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava というエラーが出てJavaを実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。

    • ベストアンサー
    • Java
  • javaが出来ません

    簡単な質問で申し訳ないのですが、 j2sdk1.4.1をインストールして "HelloWorld"とDOSで表示しようとしたのですが javac HelloWorld.java までは出来てclassもあるのですが java HelloWordを実行しようとしのですが、 Exception in thread "main" java,lang.NoClassDefFoundError:HelloWorld と表示されます。 どうしたらいいのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • Javaの環境について

    以前は普通に動いていたのですが、久しぶりに実行したら Exception int thread "main" java.lang.NoClassDefFoundError:ファイル名 というエラーがでるようになりました。 サイトで調べてみたら 『実行しようとしたclassのclassファイルが見つからないことを示しています。カレント・ディレクトリにちゃんと存在しているかどうかを確かめてください。』 という答えが書いてありました。 しかし、ちゃんと存在していますし、classファイルjavaファイルともに同じファイル名にしています。 おわかりになる方いらっしゃいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaが実行されません。

    javacコマンドは正常に動くのですが、 javaコマンドを使用すると Exception in thread "main" java.lang.NoclassDefFoundError:Sample2 と表示されるんですよ。 どのクラスファイルに対してもそうで、 以前実行できたクラスファイルに対しても そのエラーが出るんです。

    • ベストアンサー
    • Java

専門家に質問してみよう