Я пытаюсь написать нового слушателя для Jira, и я столкнулся с проблемой, с которой я был бы очень признателен за помощь и руководство.
Справочная информация Мы работаем с Jira 4.2.2 Enterprise WAR под Apache Tomcat.Это включает в себя следующие файлы jar в webapps / jira / WEB-INF / lib:
* slf4j-api-1.5.8.jar
* slf4j-log4j12-1.5.8.jar
У нас есть простой класс, который запускается как плагин.Он получает события и в зависимости от типа события выполняет некоторую работу.Этот класс использует slf4j для ведения журнала и работает как положено.Класс упакован в jar и развернут в webapps / jira / WEB-INF / lib и используется оттуда.Мы можем добавить это в качестве прослушивателя, настроить его и видеть сообщения инициализации в журнале.Все ведение журнала происходит через slf4j и работает.
Когда мы пытаемся добавить функциональность в наш плагин из сторонней библиотеки, мы получаем следующее исключение: com.atlassian.util.concurrent.LazyReference $ InitializationException: java.lang.NoClassDefFoundError: org / slf4j / LoggerFactory
Поскольку slf4j доступен и используется классом, из которого мы вызываем эту стороннюю библиотеку, я не понимаю, что я делаю неправильно или как сделать это доступным в то времячто вызов сделан.
Рабочий случай
В нашем коде мы создаем регистратор следующим образом:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.3rdparty.login;
public class JiraSampleListener extends AbstractIssueEventListener implements IssueEventListener {
private final static Logger logger = LoggerFactory.getLogger(JiraSampleListener.class);
.
.
.
Затем мы можем использоватьэто путем вызова
logger.warn("MESSAGE")
Ожидаемое сообщение появляется в наших журналах.
Ошибка
Как только мы добавим к этому следующий кодкласс, мы получаем прикрепленное исключение:
newThing = new 3rdPartyClass("name of thing");
Исключение
com.atlassian.util.concurrent.LazyReference $ InitializationException: java.lang.NoClassDefFoundError: org/ slf4j / LoggerFactory
Буду очень признателен за любые советы по разрешению этого или указаний на то, что я делаю неправильно!
Ниже следует более полное представление об исключении ...
2011-01-19 05:30:51,016 main ERROR [com.atlassian.jira.ComponentManager] Error occurred
while starting component 'com.atlassian.jira.event.DefaultListenerManager'.
com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:148)
at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:111)
at com.atlassian.util.concurrent.ResettableLazyReference.get(ResettableLazyReference.java:89)
at com.atlassian.jira.event.DefaultListenerManager$Listeners.start(DefaultListenerManager.java:93)
at com.atlassian.jira.event.DefaultListenerManager.start(DefaultListenerManager.java:38)
at com.atlassian.jira.ComponentManager.quickStart(ComponentManager.java:256)
at com.atlassian.jira.ComponentManager.start(ComponentManager.java:212)
at com.atlassian.jira.upgrade.ConsistencyLauncher.launchConsistencyChecker(ConsistencyLauncher.java:63)
at com.atlassian.jira.upgrade.ConsistencyLauncher.contextInitialized(ConsistencyLauncher.java:42)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at 3rd.party.3rdPartyClassDefaultImpl.(3rdPartyClassDefaultImpl.java:101)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at 3rd.party.3rdParty.(3rdParty.java:107)
at 3rd.party.3rdParty.(3rdParty.java:83)
at 3rd.party.3rdParty.(3rdParty.java:67)
at my.organisationlisteners.JiraSampleListener.init(JiraSampleListener.java:36)
at com.atlassian.jira.event.ListenerFactory.getListener(ListenerFactory.java:33)
at com.atlassian.jira.event.DefaultListenerManager$Listeners.loadListeners(DefaultListenerManager.java:126)
at com.atlassian.jira.event.DefaultListenerManager$Listeners.create(DefaultListenerManager.java:71)
at com.atlassian.jira.event.DefaultListenerManager$Listeners.create(DefaultListenerManager.java:66)
at com.atlassian.util.concurrent.ResettableLazyReference$InternalReference.create(ResettableLazyReference.java:143)
at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:316)
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:142)
... 32 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 46 more