2016-07-02 7 views
0

Ich versuche ein Scala-Projekt mit Proguard zu verkleinern, das die Amazon AWS-Bibliotheken benötigt. Die ursprüngliche JAR-Datei funktioniert wie erwartet, aber die geschrumpfte gibt die Ausnahme aus, dass einige Klassen keine MBean-Konventionen implementieren. Ich habe einige ähnliche Probleme aussortiert, bevor ich "-keep" -Optionen verwendete, aber dieses Mal bin ich verloren.Proguard: AmazonAWS und MBean Ausgabe

Irgendwelche Ideen, wie man es löst, werden geschätzt?

Jul 02, 2016 9:29:38 AM com.amazonaws.jmx.SdkMBeanRegistrySupport registerMetricAdminMBean 
WARNING: 
java.lang.IllegalArgumentException: javax.management.NotCompliantMBeanException: MBean class com.amazonaws.metrics.MetricAdmin does not implement DynamicMBean, and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.amazonaws.metrics.MetricAdmin: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant MXBean) 
    at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:56) 
    at com.amazonaws.jmx.SdkMBeanRegistrySupport.registerMetricAdminMBean(SdkMBeanRegistrySupport.java:27) 
    at com.amazonaws.metrics.AwsSdkMetrics.registerMetricAdminMBean(AwsSdkMetrics.java:390) 
    at com.amazonaws.metrics.AwsSdkMetrics.<clinit>(AwsSdkMetrics.java:351) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.<clinit>(AmazonDynamoDBClient.java:245) 
    at mycode.MinimalTest$.entry(MinimalTest.scala:275) 
    at mycode.MinimalTest$.main(MinimalTest.scala:248) 
    at mycode.MinimalTest.main(MinimalTest.scala) 
Caused by: javax.management.NotCompliantMBeanException: MBean class com.amazonaws.metrics.MetricAdmin does not implement DynamicMBean, and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.amazonaws.metrics.MetricAdmin: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant MXBean) 
    at com.sun.jmx.mbeanserver.Introspector.checkCompliance(Introspector.java:176) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:317) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) 
    at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:52) 
    ... 7 more 

Jul 02, 2016 9:29:38 AM com.amazonaws.jmx.SdkMBeanRegistrySupport registerMetricAdminMBean 
WARNING: 
java.lang.IllegalArgumentException: javax.management.NotCompliantMBeanException: MBean class com.amazonaws.metrics.MetricAdmin does not implement DynamicMBean, and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.amazonaws.metrics.MetricAdmin: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant MXBean) 
    at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:56) 
    at com.amazonaws.jmx.SdkMBeanRegistrySupport.registerMetricAdminMBean(SdkMBeanRegistrySupport.java:27) 
    at com.amazonaws.metrics.AwsSdkMetrics.registerMetricAdminMBean(AwsSdkMetrics.java:399) 
    at com.amazonaws.metrics.AwsSdkMetrics.<clinit>(AwsSdkMetrics.java:351) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.<clinit>(AmazonDynamoDBClient.java:245) 
    at mycode.MinimalTest$.entry(MinimalTest.scala:275) 
    at mycode.MinimalTest$.main(MinimalTest.scala:248) 
    at mycode.MinimalTest.main(MinimalTest.scala) 
Caused by: javax.management.NotCompliantMBeanException: MBean class com.amazonaws.metrics.MetricAdmin does not implement DynamicMBean, and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.amazonaws.metrics.MetricAdmin: Class com.amazonaws.metrics.MetricAdmin is not a JMX compliant MXBean) 
    at com.sun.jmx.mbeanserver.Introspector.checkCompliance(Introspector.java:176) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:317) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) 
    at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:52) 
    ... 7 more 

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:531) 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:448) 
    at com.amazonaws.internal.config.InternalConfig.<clinit>(InternalConfig.java:43) 
    at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304) 
    at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:141) 
    at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:136) 
    at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:97) 
    at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:60) 
    at com.amazonaws.ClientConfigurationFactory.getDefaultConfig(ClientConfigurationFactory.java:46) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientConfigurationFactory.getDefaultConfig(AmazonDynamoDBClientConfigurationFactory.java:31) 
    at com.amazonaws.ClientConfigurationFactory.getConfig(ClientConfigurationFactory.java:36) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsyncClient.<init>(AmazonDynamoDBAsyncClient.java:319) 
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsyncClient.<init>(AmazonDynamoDBAsyncClient.java:299) 
    at mycode.MinimalTest$.entry(MinimalTest.scala:275) 
    at mycode.MinimalTest$.main(MinimalTest.scala:248) 
    at mycode.MinimalTest.main(MinimalTest.scala) 
Caused by: java.lang.NullPointerException 
    at com.fasterxml.jackson.databind.cfg.MapperConfig.collectFeatureDefaults(MapperConfig.java:88) 
    at com.fasterxml.jackson.databind.cfg.MapperConfigBase.<clinit>(MapperConfigBase.java:31) 
    ... 16 more 

Antwort

1

Sie müssen ProGuard anweisen, die MBean Klassen nicht-verschleierten zu halten die Standard-MBean Konvention zu folgen. Regeln, wie dies ausreichend sein:

-keep class **MBean { 
    void set*(***); 
    void set*(int, ***); 

    boolean is*(); 
    boolean is*(int); 

    *** get*(); 
    *** get*(int); 
} 

Diese ProGuard anweisen alle Klassen zu halten, die Namen wie * MBean haben und halten auch keine Getter/Setter.

+0

Danke. Das funktioniert wie ein Zauber! – user3127060