[ 
https://issues.apache.org/jira/browse/LOG4J2-716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14063529#comment-14063529
 ] 

Remko Popma commented on LOG4J2-716:
------------------------------------

Modified solution to avoid dependence on system properties. The new solution is 
to catch and ignore any Throwable when configuring the JMX MBeans.

Fixed in revision 1611020.
Please verify and close.

> Auto-disable JMX when detecting Android
> ---------------------------------------
>
>                 Key: LOG4J2-716
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-716
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: JMX
>            Reporter: Remko Popma
>            Assignee: Remko Popma
>             Fix For: 2.1
>
>
> During the investigation of LOG4J2-703 we discovered that on Android's Dalvik 
> VM, Log4J2's JMX components cannot be initialized.
> This can be worked around by setting system property 
> {{log4j2.disable.jmx=true}}.
> This ticket is to automatically set that system property when detecting that 
> Log4j is running on Android.
> TODO investigate if JMX is not supported at all on that environment or 
> whether it can be made to work if invoked correctly. UPDATE: 
> {{java.lang.management}} is not supported as of Android API level 20. See 
> http://developer.android.com/reference/packages.html
> Stack trace:
> {noformat}
> 07-15 15:12:52.539    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.539    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.543    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve interface method 926: 
> Ljavax/management/MBeanServer;.registerMBean 
> (Ljava/lang/Object;Ljavax/management/ObjectName;)Ljavax/management/ObjectInstance;
> 07-15 15:12:52.543    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.543    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.547    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.547    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.547    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.547    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.547    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.551    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.551    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.551    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.551    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.555    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.555    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.555    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.555    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.555    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.559    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.559    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.559    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.559    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.559    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/ObjectName;)
> 07-15 15:12:52.563    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.563    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Unable 
> to resolve superclass of 
> Lorg/apache/logging/log4j/core/jmx/StatusLoggerAdmin; (391)
> 07-15 15:12:52.563    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Link of 
> class 'Lorg/apache/logging/log4j/core/jmx/StatusLoggerAdmin;' failed
> 07-15 15:12:52.563    1603-1603/com.torointl.log4j2xtest E/dalvikvm﹕ Could 
> not find class 'org.apache.logging.log4j.core.jmx.StatusLoggerAdmin', 
> referenced from method 
> org.apache.logging.log4j.core.jmx.Server.registerStatusLogger
> 07-15 15:12:52.567    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve new-instance 764 
> (Lorg/apache/logging/log4j/core/jmx/StatusLoggerAdmin;) in 
> Lorg/apache/logging/log4j/core/jmx/Server;
> 07-15 15:12:52.567    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve static method 456: 
> Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer 
> ()Ljavax/management/MBeanServer;
> 07-15 15:12:52.571    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.571    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.571    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Unable 
> to resolve superclass of 
> Lorg/apache/logging/log4j/core/jmx/LoggerContextAdmin; (391)
> 07-15 15:12:52.571    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Link of 
> class 'Lorg/apache/logging/log4j/core/jmx/LoggerContextAdmin;' failed
> 07-15 15:12:52.575    1603-1603/com.torointl.log4j2xtest E/dalvikvm﹕ Could 
> not find class 'org.apache.logging.log4j.core.jmx.LoggerContextAdmin', 
> referenced from method 
> org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure
> 07-15 15:12:52.575    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve new-instance 759 
> (Lorg/apache/logging/log4j/core/jmx/LoggerContextAdmin;) in 
> Lorg/apache/logging/log4j/core/jmx/Server;
> 07-15 15:12:52.575    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.575    1603-1603/com.torointl.log4j2xtest E/dalvikvm﹕ Could 
> not find class 'javax.management.ObjectName', referenced from method 
> org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching
> 07-15 15:12:52.579    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve new-instance 393 (Ljavax/management/ObjectName;) in 
> Lorg/apache/logging/log4j/core/jmx/Server;
> 07-15 15:12:52.579    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.579    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.579    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.583    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.583    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.583    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.583    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.587    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.587    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.587    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.587    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.587    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.591    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.591    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.591    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve static method 456: 
> Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer 
> ()Ljavax/management/MBeanServer;
> 07-15 15:12:52.595    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.599    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.603    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.607    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.611    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.615    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.615    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.619    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.623    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.627    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to resolve static method 456: 
> Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer 
> ()Ljavax/management/MBeanServer;
> 07-15 15:12:52.631    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.635    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.639    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.643    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.647    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.651    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.651    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.655    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.659    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.663    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.671    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ VFY: 
> unable to find class referenced in signature (Ljavax/management/MBeanServer;)
> 07-15 15:12:52.675    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Unable 
> to resolve superclass of 
> Lorg/apache/logging/log4j/core/jmx/StatusLoggerAdmin; (391)
> 07-15 15:12:52.675    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Link of 
> class 'Lorg/apache/logging/log4j/core/jmx/StatusLoggerAdmin;' failed
> 07-15 15:12:52.683    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Unable 
> to resolve superclass of 
> Lorg/apache/logging/log4j/core/jmx/LoggerContextAdmin; (391)
> 07-15 15:12:52.683    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ Link of 
> class 'Lorg/apache/logging/log4j/core/jmx/LoggerContextAdmin;' failed
> 07-15 15:12:52.695    1603-1603/com.torointl.log4j2xtest W/dalvikvm﹕ 
> threadid=1: thread exiting with uncaught exception (group=0xa4d72b20)
> 07-15 15:12:52.715    1603-1603/com.torointl.log4j2xtest E/AndroidRuntime﹕ 
> FATAL EXCEPTION: main
>     Process: com.torointl.log4j2xtest, PID: 1603
>     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)
>             at 
> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:416)
>             at 
> org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:146)
>             at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:75)
>             at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:37)
>             at 
> org.apache.logging.log4j.LogManager.getLogger(LogManager.java:473)
>             at 
> com.torointl.log4j2xtest.MyActivity.onCreate(MyActivity.java:28)
>             at android.app.Activity.performCreate(Activity.java:5231)
>             at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
>             at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
>             at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
>             at android.app.ActivityThread.access$800(ActivityThread.java:135)
>             at 
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
>             at android.os.Handler.dispatchMessage(Handler.java:102)
>             at android.os.Looper.loop(Looper.java:136)
>             at android.app.ActivityThread.main(ActivityThread.java:5017)
>             at java.lang.reflect.Method.invokeNative(Native Method)
>             at java.lang.reflect.Method.invoke(Method.java:515)
>             at 
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
>             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
>             at dalvik.system.NativeStart.main(Native Method)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to