log4jの組み込みJMSAppenderを使用してローカルメッセージキュー(ActiveMQ)にメッセージを記録しようとしています。奇妙なlog4jエラー
は、私がテストエントリmain
方法を持っているDriver
を設定し、それはちょうど私が接続したい実際のクラスインスタンス化します。
Driver.java
:
public static void main(String[] args) {
Log4jAmqBridge bridge = new Log4jAmqBridge();
bridge.run();
}
Log4jAmqBridge.java
:
public void run() {
// ...
}
を
run
メソッドが完全に空の場合(指示なし)、 Driver
を実行すると、空のコンソール(Eclipse)が表示されます。しかし、私はrun()
に次のコンストラクタを追加秒:
JMSAppender appender = new JMSAppender();
私は次のエラーを取得:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/JMSException
at test.jmsappender.Log4jAmqBridge.run(Log4jAmqBridge.java:11)
at test.Driver.main(Driver.java:11)
Caused by: java.lang.ClassNotFoundException: javax.jms.JMSException
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.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
私はjavadocをチェックしJMSAppender
引数なしのコンストラクタがスローされますようにそれが見えません例外。
何が起こっているのか分かりませんか?
編集:私は実際に私の依存関係を管理するために、Mavenを使用していますし、私のポンポンで、次の依存関係の宣言が含まれている :
<dependency>
<scope>compile</scope>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<scope>compile</scope>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
私のプロジェクトにMavenの依存関係の下で、次のjarファイルを置きます(どのまた)Eclipseワークベンチのクラスパスに追加される:
- SLF4J-API-1.6.4
- SLF4J-log4j12-1.6.4
- log4j-1.2.16
ありがとうございます!
競合するジャーのクラスパスを確認してください – zmf
あなたはそのクラスまたはそれに依存するものがありません。何を展開していますか?何に展開していますか? JMSには何を使用していますか? –
Mavenと依存関係について私の編集を参照してください... – IAmYourFaja