But beats me why the JNDI stuff would throw a VerifyError and the JMX stuff only a NoClassDefFoundError...
On Wed, Jul 16, 2014 at 10:49 PM, Remko Popma <[email protected]> wrote: > I did think about that but if you look at the stack trace it is able to > load the Server class, so I think we're okay: > > java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory > at > org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:118) > at > org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:369) > > > > > On Wed, Jul 16, 2014 at 10:41 PM, Gary Gregory <[email protected]> > wrote: > >> I do not think this is going to work. See my fix for the JNDI lookup >> loading. >> >> Because you have a hard reference in the LoggerContext class to our JMX >> Server class, you still have a dependency on JMX. We need to refer to our >> JMX Server class dynamically, using reflection for example. >> >> Gary >> >> >> ---------- Forwarded message ---------- >> From: <[email protected]> >> Date: Wed, Jul 16, 2014 at 9:31 AM >> Subject: svn commit: r1611003 - in /logging/log4j/log4j2/trunk: >> log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >> log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> src/changes/changes.xml >> To: [email protected] >> >> >> Author: rpopma >> Date: Wed Jul 16 13:31:07 2014 >> New Revision: 1611003 >> >> URL: http://svn.apache.org/r1611003 >> Log: >> LOG4J2-716: automatically disable log4j JMX when detecting we are running >> on Android >> >> Added: >> >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> (with props) >> Modified: >> >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >> logging/log4j/log4j2/trunk/src/changes/changes.xml >> >> Modified: >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >> URL: >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java?rev=1611003&r1=1611002&r2=1611003&view=diff >> >> ============================================================================== >> --- >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >> (original) >> +++ >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java >> Wed Jul 16 13:31:07 2014 >> @@ -41,6 +41,7 @@ import org.apache.logging.log4j.core.con >> import org.apache.logging.log4j.core.config.Reconfigurable; >> import org.apache.logging.log4j.core.jmx.Server; >> import org.apache.logging.log4j.core.util.Assert; >> +import org.apache.logging.log4j.core.util.Environment; >> import org.apache.logging.log4j.core.util.NetUtils; >> import org.apache.logging.log4j.message.MessageFactory; >> import org.apache.logging.log4j.spi.AbstractLogger; >> @@ -365,10 +366,12 @@ public class LoggerContext extends Abstr >> >> firePropertyChangeEvent(new PropertyChangeEvent(this, >> PROPERTY_CONFIG, prev, config)); >> >> - try { >> - Server.reregisterMBeansAfterReconfigure(); >> - } catch (final Exception ex) { >> - LOGGER.error("Could not reconfigure JMX", ex); >> + if (!Environment.isAndroid()) { // LOG4J2-716: Android has no >> java.lang.management >> + try { >> + Server.reregisterMBeansAfterReconfigure(); >> + } catch (final Exception ex) { >> + LOGGER.error("Could not reconfigure JMX", ex); >> + } >> } >> return prev; >> } >> >> Added: >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> URL: >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java?rev=1611003&view=auto >> >> ============================================================================== >> --- >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> (added) >> +++ >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> Wed Jul 16 13:31:07 2014 >> @@ -0,0 +1,34 @@ >> +/* >> + * Licensed to the Apache Software Foundation (ASF) under one or more >> + * contributor license agreements. See the NOTICE file distributed with >> + * this work for additional information regarding copyright ownership. >> + * The ASF licenses this file to You under the Apache license, Version >> 2.0 >> + * (the "License"); you may not use this file except in compliance with >> + * the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, software >> + * distributed under the License is distributed on an "AS IS" BASIS, >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> + * See the license for the specific language governing permissions and >> + * limitations under the license. >> + */ >> + >> +package org.apache.logging.log4j.core.util; >> + >> +/** >> + * Runtime environment-related utility methods. >> + */ >> +public final class Environment { >> + private Environment() { >> + } >> + >> + /** >> + * Returns {@code true} if we are running on Android, {@code false} >> otherwise >> + * @return {@code true} if system property >> "java.specification.vendor" contains "android" >> + */ >> + public static boolean isAndroid() { >> + return System.getProperty("java.specification.vendor", >> "x").toLowerCase().contains("android"); >> + } >> +} >> >> Propchange: >> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml >> URL: >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1611003&r1=1611002&r2=1611003&view=diff >> >> ============================================================================== >> --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original) >> +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Jul 16 >> 13:31:07 2014 >> @@ -22,6 +22,9 @@ >> </properties> >> <body> >> <release version="?" date="2014-mm-dd" description="?"> >> + <action issue="LOG4J2-716" dev="popmarem" type="fix"> >> + Automatically disable log4j JMX when detecting we are running on >> Android. >> + </action> >> <action issue="LOG4J2-657" dev="popmarem" type="fix" >> due-to="Stefan Wehner"> >> Fixed AbstractDatabaseManager to close connection on >> writeInternal error. >> </action> >> >> >> >> >> >> -- >> E-Mail: [email protected] | [email protected] >> Java Persistence with Hibernate, Second Edition >> <http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > >
