- - PR -
jarファイル実行時に、java.lang.NoClassDefFoundError: org/apache/log4j/Loggerと出る
1|2|3
次のページへ»
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-01-25 13:12
前トピックと趣旨が変わってきたので新たにスレッドを作成します。 問題はjava -cp agent.jar agent.socket.Agentというコマンドを実行した際(agent.jarのAgent.classを実行する)、 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unkonwn Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Laucher$AppClassLoader.loadClass(Unknown Source) at at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at client.socket.agent.Agent.<clinit>(Agent.java:38) と表示されます。Agent.javaの38行目は、 private static AgentLogger log = AgentLogger.getAgentLogger(Agent.class) となっています。 また、agent.jarのフォルダ構成は src-----(略)---javaファイル | lib-----log4j1.2.12.jar | bin------(略)---classファイル | log4j.property のようになっています。 jarファイルはエクリプスで作成しており、エクリプス上では正常に動くことも確認できています。 エラーから、log4j-1.2.12.jarのorg/apache/log4j/Logger.classがないのかなと思ったのですが、調べたらありました。あとはパスの設定が間違っているなどでしょうか? また、log4j-1.2.12.jarのMANIFEST.MFにMain-Classの記述がないのですが、これも関係あるのでしょうか? 分かる方いらっしゃいましたら教えていただきたいです。よろしくお願いします。 |
|
投稿日時: 2006-01-25 13:22
ちょっとでも自分で調べたんですか?
-cpオプションに、log4j1.2.12.jarを追加してごらんなさい。 |
|
投稿日時: 2006-01-25 14:13
Edossonさん、ありがとうございます。
一応調べてはいるのですが、、、まだまだ調べ方が甘いですよね。ご指摘ありがとうございます。 -cpオプションにlog4jのjarファイルを追加するのは今日の朝にやってできなかったのですが、やり方がぜんぜん違っていたかもしれません。すぐにだめだとあきらめてました。私が試したコマンドは、 ...(略)/bin#java -cp agent.jar socekt/agent/Agent; log4j-1.2.12.jar org/apache/log4j/Logger ...(略)/bin#java -cp agent.jar socket/agent/Agent; log4j-1.2.12.jar ...(略)/bin#java -cp log4j-1.2.12.jar org/apache/log4j/Logger; agent.jar socket/agent/Agent ...(略)/bin#java -cp log4j-1.2.12.jar; agent.jar socket/agent/Agent ...(略)/bin#java -cp log4j-1.2.12.jar; agent.jar socket/agent/Agent の5種類です。まったく理解できていないため、見当違いな気もするのですが。私自身ももう少しねばって調べてみますので、お力を貸してください。よろしくお願いします。 |
|
投稿日時: 2006-01-25 14:21
あんまり root のまま作業するのはお勧めしません。
たぶんいじり倒してもよい環境で作業しているのだとは思いますが・・。 Unix でパスをどのように表記するか調べてみましょう。 [java "-cp" クラスパス linux]とか。 |
|
投稿日時: 2006-01-25 15:50
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/solaris/classpath.html
それと、log4j-1.2.12.jarがちゃんと見えるように、指定するんですよ。念のため。 |
|
投稿日時: 2006-01-25 16:23
インギさん、またまたありがとうございます。rootでの作業は、今回は大丈夫なのですが、あまりrootでは作業しないほうがよいですね。ありがとうございます。
パスですが、agent.jarがカレントディレクトリにある場合は./agent.jarと書くということは分かったのですが、agent.jarの中にあるlog4j-1.2.12.jarの扱いは、、、 jarファイルの中に別のjarファイルが存在する例などを探してみたのですが、見つけられませんでした。エクリプスでlog4j-1.2.12.jarのぱすをみたところagent/lib/log4j-1.2.12.jar(agentがプロジェクト名)だったのですが、同じように設定できるわけではないですよね。すごく難しいです。。。 log4j-1.2.12.jarのクラスパスの指定方法についてもう少し教えてください。すみませんがよろしくおねがいします。 |
|
投稿日時: 2006-01-25 16:32
クラスパスの設定になれないうちにかなり特殊なパターンに遭遇してしまいましたね。
その製品のドキュメントかなにかに書いてありませんか? それはそのままでは指定できないと思います。たぶん。 展開して生の(?)jarファイルをクラスパスに通しましょう。 |
|
投稿日時: 2006-01-25 16:33
インギさん、またまたありがとうございます。rootでの作業は、今回は大丈夫なのですが、あまりrootでは作業しないほうがよいですね。ありがとうございます。
パスですが、agent.jarがカレントディレクトリにある場合は./agent.jarと書くということは分かったのですが、agent.jarの中にあるlog4j-1.2.12.jarの扱いは、、、 jarファイルの中に別のjarファイルが存在する例などを探してみたのですが、見つけられませんでした。エクリプスでlog4j-1.2.12.jarのぱすをみたところagent/lib/log4j-1.2.12.jar(agentがプロジェクト名)だったのですが、同じように設定できるわけではないですよね。すごく難しいです。。。 log4j-1.2.12.jarのクラスパスの指定方法についてもう少し教えてください。すみませんがよろしくおねがいします。 |
1|2|3
次のページへ»