tags:

views:

908

answers:

2

this is driving me insane. I'm simply trying to run activemq on Mac OSX 10.5.7. I have java version 1.5.0_19 and activemq 5.2.0. Below is the exception I get when running bin/activemq. It seems to be unable to find log4j which is odd considering it comes with activemq and is definitely in the lib/optionals directory. The only thing I can think of is that I have a conflict somewhere, but I can't imagine how this is possible. If anyone has any tips whatsoever I'm all ears, googling produced almost no results with the same error, and the one person who has the exact error doesn't have a solution.

> 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
+1  A: 

This looks like the exception is being caused by a NoClassDefFoundError for org.apache.log4j.Category. You should make sure that the log4j jar is on the classpath.

Edit: Is there any way that you can inspect the value of the ACTIVEMQ_CLASSPATH variable? If you're invoking this through a script that is setting the variable, you might need to dig into the script to make sure it's adding all the directories you think it is to the classpath.

Paul Morie
ya i can see that it doesn't recognize log4j. I don't understand that though because log4j is within the lib/optional directory in the activemq dir. And activemq is setting it's own ACTIVEMQ_CLASSPATH variable. What's the point of including it in the download if it doesn't load it? Or, could there be some conflict on my machine? I don't know how I even check to see what jar it's getting. or if it's getting one at all
brad
+1  A: 

So, it was definitely a conflict with another log4j jar file. I think it's probably my eclipse plugin log4j that was conflicting. When i delete the log4j from activemq lib/optional it works.

brad