Попытка использовать встроенный в JMSAppender log4j для записи сообщений в локальную очередь сообщений (ActiveMQ).
Я настроил тест Driver
, в котором есть метод ввода main
и который просто создает экземпляр фактического класса, к которому я хочу подключиться:
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 для управления своими зависимостями и включил в свой pom следующие объявления зависимостей:
<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>
, который помещает следующие jar-файлы в раздел Maven Dependencies в моем проекте (которые также добавляются в путь к классу рабочей среды Eclipse):
- SLF4J-апи-1.6.4
- SLF4J-log4j12-1.6.4
- log4j-1.2.16
Заранее спасибо!