My application uses log4J and when I deployed to our development server, I was getting the following exception:
CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method “onMessage” on bean “BeanId(LoggingEAR#LoggingEJB.jar#LoggingExceptionMDB, null)”. Exception data: java.lang.NoSuchMethodError: org/apache/log4j/Logger.trace(Ljava/lang/Object;)V
At first, I believed that this was caused by Log4J not being on the classpath in ear. Upon further inspection, it’s not a ClassNotFoundException but a NoSuchMethodError.
I looked at the classpath of my EJB and discovered that oracle had installed it’s own copy of Log4J onto the server classpath and this older version did not have the trace() method.