ActiveMQ Nessun costruttore Log adatto
Domanda
questo mi sta facendo impazzire. Sto semplicemente cercando di eseguire ActiveMQ su Mac OSX 10.5.7. Ho Java versione 1.5.0_19 e ActiveMQ 5.2.0. Qui di seguito è l'eccezione che provo quando l'esecuzione bin / ActiveMQ. Sembra essere in grado di trovare log4j che è strano considerando che viene fornito con ActiveMQ ed è sicuramente nella directory lib / optional. L'unica cosa che posso pensare è che ho un conflitto da qualche parte, ma non riesco a immaginare come questo sia possibile. Se qualcuno ha qualche consiglio di sorta io sono tutto orecchie, googling prodotto quasi alcun risultato con lo stesso errore, e l'unica persona che ha l'errore esatto non avere una soluzione.
> brad-robertsons-macbook-pro:apache-activemq-5.2.0
> bradrobertson$ ./bin/activemq
> ACTIVEMQ_HOME:
> /Users/bradrobertson/Java/apache-activemq-5.2.0
> ACTIVEMQ_BASE:
> /Users/bradrobertson/Java/apache-activemq-5.2.0
> Loading message broker from:
> xbean:activemq.xml ERROR:
> java.lang.RuntimeException: Failed to
> execute start task. Reason:
> java.io.IOException: Could not load
> xbean
> factory:java.lang.ExceptionInInitializerError
> java.lang.RuntimeException: Failed to
> execute start task. Reason:
> java.io.IOException: Could not load
> xbean
> factory:java.lang.ExceptionInInitializerError
> at
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:98)
> at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
> at
> org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:129)
> at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
> at
> org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:79)
> 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:585)
> at
> org.apache.activemq.console.Main.runTaskClass(Main.java:225)
> at
> org.apache.activemq.console.Main.main(Main.java:106)
> Caused by: java.io.IOException: Could
> not load xbean
> factory:java.lang.ExceptionInInitializerError
> at
> org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
> at
> org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:43)
> at
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:70)
> at
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
> at
> org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:115)
> at
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74)
> ... 10 more Caused by:
> java.lang.ExceptionInInitializerError
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method) at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at
> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> at
> java.lang.Class.newInstance0(Class.java:350)
> at
> java.lang.Class.newInstance(Class.java:303)
> at
> org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:55)
> at
> org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:42)
> at
> org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:41)
> ... 14 more Caused by:
> org.apache.commons.logging.LogConfigurationException:
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category) (Caused by
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category)) at
> org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
> at
> org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
> at
> org.apache.activemq.xbean.XBeanBrokerFactory.<clinit>(XBeanBrokerFactory.java:43)
> ... 23 more Caused by:
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category) at
> org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:413)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
> ... 27 more Caused by:
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category at
> java.lang.Class.getDeclaredConstructors0(Native
> Method) at
> java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
> at
> java.lang.Class.getConstructor0(Class.java:2671)
> at
> java.lang.Class.getConstructor(Class.java:1629)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410)
> ... 28 more ERROR:
> java.lang.Exception:
> java.io.IOException: Could not load
> xbean
> factory:java.lang.ExceptionInInitializerError
> java.lang.Exception:
> java.io.IOException: Could not load
> xbean
> factory:java.lang.ExceptionInInitializerError
> at
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:99)
> at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
> at
> org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:129)
> at
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
> at
> org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:79)
> 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:585)
> at
> org.apache.activemq.console.Main.runTaskClass(Main.java:225)
> at
> org.apache.activemq.console.Main.main(Main.java:106)
> Caused by: java.io.IOException: Could
> not load xbean
> factory:java.lang.ExceptionInInitializerError
> at
> org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
> at
> org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:43)
> at
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:70)
> at
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
> at
> org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:115)
> at
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74)
> ... 10 more Caused by:
> java.lang.ExceptionInInitializerError
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method) at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at
> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> at
> java.lang.Class.newInstance0(Class.java:350)
> at
> java.lang.Class.newInstance(Class.java:303)
> at
> org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:55)
> at
> org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:42)
> at
> org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:41)
> ... 14 more Caused by:
> org.apache.commons.logging.LogConfigurationException:
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category) (Caused by
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category)) at
> org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
> at
> org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
> at
> org.apache.activemq.xbean.XBeanBrokerFactory.<clinit>(XBeanBrokerFactory.java:43)
> ... 23 more Caused by:
> org.apache.commons.logging.LogConfigurationException:
> No suitable Log constructor
> [Ljava.lang.Class;@abcc03 for
> org.apache.commons.logging.impl.Log4JLogger
> (Caused by
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category) at
> org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:413)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
> ... 27 more Caused by:
> java.lang.NoClassDefFoundError:
> org/apache/log4j/Category at
> java.lang.Class.getDeclaredConstructors0(Native
> Method) at
> java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
> at
> java.lang.Class.getConstructor0(Class.java:2671)
> at
> java.lang.Class.getConstructor(Class.java:1629)
> at
> org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410)
> ... 28 more
Soluzione
Quindi, è stato sicuramente un conflitto con un altro file jar di log4j. Penso che sia probabilmente il mio Plug-in Eclipse log4j che era in conflitto. Quando elimino il log4j da lib activemq / opzionale funziona.
Altri suggerimenti
Questo appare come l'eccezione è causato da un NoClassDefFoundError
per org.apache.log4j.Category
. È necessario assicurarsi che il log4j
vaso è sul classpath.
Modifica C'è un modo che è possibile controllare il valore della variabile di ACTIVEMQ_CLASSPATH
? Se stai invocando questo attraverso uno script che viene impostando la variabile, potrebbe essere necessario scavare lo script per assicurarsi che sia l'aggiunta di tutte le directory si pensa che è al classpath.