- - PR -
jarファイル実行時に、java.lang.NoClassDefFoundError: org/apache/log4j/Loggerと出る
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-25 16:46
ん?なんか変ですがもう一度。
クラスパスの設定になれないうちにかなり特殊なパターンに遭遇してしまいましたね。 その製品のドキュメントかなにかに書いてありませんか? 特殊なケースなのでドキュメントにかいてあるかと思います。 それはそのままでは指定できないと思います。たぶん。 展開して生の(?)jarファイルをクラスパスに通しましょう。 | ||||||||
|
投稿日時: 2006-01-25 17:08
インギさん、それはどういうことでしょうか?
jarを展開して実行すると、 Exception in thread "main" java.lang.NoClassDefFoundError: Agent と出力します。 また、製品のドキュメントとはどのようなものでしょうか? 申し訳ありませんが教えてください。よろしくお願いします。 | ||||||||
|
投稿日時: 2006-01-25 17:15
製品のドキュメントとは、製品に付属している使い方などを説明した文書のことです。
というのも、自分で書いたプログラムであればこのテのことは大抵わかるので、わからないということは既存のなんらかの製品を使っているのではないかと推測したわけです。 NoClassDefFoundError はクラスパスにクラスが見つからないという意味です。Java コマンドのクラスパスの指定方法を今一度確認してください。これも java 自体に付属しているドキュメントから確認できます。さいくろうさんが指摘されているものですね。 | ||||||||
|
投稿日時: 2006-01-25 17:46
実はこれはほかの人が作ってテストから私がひきついだものになっているのです。その人はもうおらず、誰も分からないため、一人で焦っている状態です、、、logをはかなければ実行できることは確認できたのですが、logをはかないとだめらしくて。
教えていただきたいことがあるのですが、もしこのような特殊なケースでない場合、jarファイルを実行するにはどのようなコマンドをうてばよいのですか?知識不足で申し訳ないのですが、ご教授ください。お願いします。 | ||||||||
|
投稿日時: 2006-01-25 18:11
なるほど、大変な状況ですね。
しかし先の説明は読まれましたか? NoClassDefFoundError の意味を説明しました。 また、クラスパスの指定方法についてはさいくろうさんが指摘されたドキュメントをご覧になると大変参考になるかと存じます。 それらを踏まえた上で今一度見直し、さらに分からない点があればもう少し具体的に何がわからないか示すことができるかと思います。 | ||||||||
|
投稿日時: 2006-01-25 18:48
クラスパスの指定の仕方が間違っています。複数のパスを指定する場合、Unixであれば、 以下のようにコロン(で連結します。 java -cp agent.jar:log4j-1.2.12.jar socket.agent.Agent 気になるのは最初の書き込みに
とあることです。これはagent.jarの中身がこうなっている、ということでしょうか。 なんとなく開発環境(Eclipse)でのディレクトリ構成のように思えるのですが。 | ||||||||
|
投稿日時: 2006-01-25 19:18
インギさん、ukさん、ありがとうございます。さいくろうさんが添付してくださったURLをみました。
ukさんに教えていただいたようにjava -cp agent.jar:log4j-1.2.12.jar socekt/agent/Agent と打ちましたがダメでした。 またさいくろうさんのURLに書いてあったように、java-cp clathpass path1:path2とあるので、 java -cp agent.jar socket/agent/Agent:lib/org/apache/log4j/Loggerとしました。Loggerを入れたのは前にエラーでLoggerのクラスパスにファイルがないと出たためで、いれるべきなのかな?と思いました。 これもエラーがでました。エラーはやはりorg/apache/log4j/Loggerがないということです。また、-bash: lib/org/apache/log4j/Logger:そのようなファイルやディレクトリはありませんとも出てきました。 全体的に理解できていないのですが、特にagent.jarの中にあるlog4j-1.2.12.jar中のファイルに関するクラスパスの設定です。これの対処が朝からずっと分かっていないので、少しでも分かる方がいらっしゃったら解説していただきたいです。教えてもらってばかりで申し訳ないのですが、お願いします。 そして、ukさんの指摘どおり、agent.jarの中身間違ってました。libにlog4j-1.2.12.jar, socket/配下にclassファイルが入っています。ご指摘ありがとうございました。 | ||||||||
|
投稿日時: 2006-01-25 19:41
jarファイルの中にjarファイルを入れてもだめです。log4j-1.2.12.jarを取り出して agent.jarと同じディレクトリに置き、同じコマンドで実行してみてください。 |