JMX Exception "Caused by: java.lang.ClassNotFoundException: [Lbyte;"

I am having the following problem while running some HBase code. It looks like it comes from the MXBean bits. I totally disagree with this, but it looks pretty low level.

javax.management.NotCompliantMBeanException: org.apache.hadoop.hbase.master.MXBean: Method org.apache.hadoop.hbase.master.MXBean.getRegionServers has parameter or return type that cannot be translated into an open type
    at com.sun.jmx.mbeanserver.Introspector.throwException(Introspector.java:419)
    at com.sun.jmx.mbeanserver.MBeanAnalyzer.<init>(MBeanAnalyzer.java:118)
    at com.sun.jmx.mbeanserver.MBeanAnalyzer.analyzer(MBeanAnalyzer.java:104)
    at com.sun.jmx.mbeanserver.MXBeanIntrospector.getAnalyzer(MXBeanIntrospector.java:71)
    at com.sun.jmx.mbeanserver.MBeanIntrospector.getPerInterface(MBeanIntrospector.java:181)
    at com.sun.jmx.mbeanserver.MBeanSupport.<init>(MBeanSupport.java:136)
    at com.sun.jmx.mbeanserver.MXBeanSupport.<init>(MXBeanSupport.java:66)
    at com.sun.jmx.mbeanserver.Introspector.makeDynamicMBean(Introspector.java:184)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:936)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:330)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:516)
    at org.apache.hadoop.metrics.util.MBeanUtil.registerMBean(MBeanUtil.java:58)
    at org.apache.hadoop.hbase.master.HMaster.registerMBean(HMaster.java:1646)
    at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:527)
    at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:336)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalArgumentException: Method org.apache.hadoop.hbase.master.MXBean.getRegionServers has parameter or return type that cannot be translated into an open type
    at com.sun.jmx.mbeanserver.ConvertingMethod.from(ConvertingMethod.java:45)
    at com.sun.jmx.mbeanserver.MXBeanIntrospector.mFrom(MXBeanIntrospector.java:81)
    at com.sun.jmx.mbeanserver.MXBeanIntrospector.mFrom(MXBeanIntrospector.java:51)
    at com.sun.jmx.mbeanserver.MBeanAnalyzer.initMaps(MBeanAnalyzer.java:135)
    at com.sun.jmx.mbeanserver.MBeanAnalyzer.<init>(MBeanAnalyzer.java:116)
    ... 14 more
Caused by: javax.management.openmbean.OpenDataException: Cannot obtain array class
    at com.sun.jmx.mbeanserver.OpenConverter.openDataException(OpenConverter.java:1389)
    at com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter(OpenConverter.java:346)
    at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:295)
    at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:277)
    at com.sun.jmx.mbeanserver.OpenConverter.makeTabularConverter(OpenConverter.java:376)
    at com.sun.jmx.mbeanserver.OpenConverter.makeParameterizedConverter(OpenConverter.java:417)
    at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:312)
    at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:277)
    at com.sun.jmx.mbeanserver.OpenConverter.makeCompositeConverter(OpenConverter.java:482)
    at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:309)
    at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:277)
    at com.sun.jmx.mbeanserver.OpenConverter.makeTabularConverter(OpenConverter.java:377)
    at com.sun.jmx.mbeanserver.OpenConverter.makeParameterizedConverter(OpenConverter.java:417)
    at com.sun.jmx.mbeanserver.OpenConverter.makeConverter(OpenConverter.java:312)
    at com.sun.jmx.mbeanserver.OpenConverter.toConverter(OpenConverter.java:277)
    at com.sun.jmx.mbeanserver.ConvertingMethod.<init>(ConvertingMethod.java:197)
    at com.sun.jmx.mbeanserver.ConvertingMethod.from(ConvertingMethod.java:40)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: [Lbyte;
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter(OpenConverter.java:344)
    ... 33 more

      

+3


source to share


2 answers


Looks like it was reported in HBase JIRA

https://issues.apache.org/jira/browse/HBASE-5718



They see this as a JMX issue, which I tend to agree with by looking at the source code below. Note the comment about never seeing primitive arrays. Somehow a primitive array brought it in here and is treated like an object class.

  323       /* Make the converter for an array type, or a collection such as
  324        * List<String> or Set<Integer>.  We never see one-dimensional
  325        * primitive arrays (e.g. int[]) here because they use the identity
  326        * converter and are registered as such in the static initializer.
  327        */
  328       private static OpenConverter
  329           makeArrayOrCollectionConverter(Type collectionType, Type elementType)
  330               throws OpenDataException {
  331   
  332           final OpenConverter elementConverter = toConverter(elementType);
  333           final OpenType<?> elementOpenType = elementConverter.getOpenType();
  334           final ArrayType<?> openType = ArrayType.getArrayType(elementOpenType);
  335           final Class<?> elementOpenClass = elementConverter.getOpenClass();
  336   
  337           final Class<?> openArrayClass;
  338           final String openArrayClassName;
  339           if (elementOpenClass.isArray())
  340               openArrayClassName = "[" + elementOpenClass.getName();
  341           else
  342               openArrayClassName = "[L" + elementOpenClass.getName() + ";";
  343           try {
  344               openArrayClass = Class.forName(openArrayClassName);

      

0


source


Make sure you are not using OpenJDK to run HBase. While it is not obvious from the must -haves in the online docs , it appears that some older versions of Hbase may require Oracle Java. See this link .



0


source







All Articles