[ https://issues.apache.org/jira/browse/HBASE-11875?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ayache khettar updated HBASE-11875: ----------------------------------- Description: Hi HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The reason is that it ends up in a separate route package within an OSGI bundle. As such the class isn't viewable by the classLoader. I understand that the hbase-module isn't an osgi bundle, but there is another project which makes use of this module to generate an osgi bundle for the OSGI container: https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2. If you get hold of the binary or source artefact from maven, unzip the jar and you will see the structure of the project: com/google/ (classes defined in this package are not visible by the classLoader). org/apache/hbase I understand the reason of having a foreign package cause goggle base class defines package level methods. It would be nice to work out another way of extending google protobuf classes. I would recommend going for composition as opposed to inheritance that will solve the problem. Regards, Ayache Caused by: java.lang.NoClassDefFoundError: com/google/protobuf/HBaseZeroCopyByteString at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] ... 56 more was: Hi HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The reason is that it ends up in a separate route package within an OSGI bundle. As such the class isn't viewable by the classLoader. I understand that the hbase-module isn't an osgi bundle, but there is another project which makes use of this module to generate an osgi bundle for the OSGI container: https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2. If you get hold of the binary or source artefact from maven, unzip the jar and you will see the structure of the project: com/google/ (classes defined in this package are not visible by the classLoader). org/apache/hbase I understand the reason of having a foreign package cause goggle base class defines package level methods. It would be nice to work out another way of extending google protobuf classes. Regards, Ayache Caused by: java.lang.NoClassDefFoundError: com/google/protobuf/HBaseZeroCopyByteString at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] ... 56 more > Referencing external package com/google/protobuf/ inside hbase-protcol module > won't work in OSGI environment > ------------------------------------------------------------------------------------------------------------ > > Key: HBASE-11875 > URL: https://issues.apache.org/jira/browse/HBASE-11875 > Project: HBase > Issue Type: Improvement > Components: Protobufs > Affects Versions: 0.98.6 > Environment: OSGI container > Reporter: ayache khettar > > Hi > HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The > reason is that it ends up in a separate route package within an OSGI bundle. > As such the class isn't viewable by the classLoader. > I understand that the hbase-module isn't an osgi bundle, but there is another > project which makes use of this module to generate an osgi bundle for the > OSGI container: > https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2. > If you get hold of the binary or source artefact from maven, unzip the jar > and you will see the structure of the project: > com/google/ (classes defined in this package are not visible by the > classLoader). > org/apache/hbase > I understand the reason of having a foreign package cause goggle base class > defines package level methods. It would be nice to work out another way of > extending google protobuf classes. I would recommend going for composition as > opposed to inheritance that will solve the problem. > Regards, > Ayache > Caused by: java.lang.NoClassDefFoundError: > com/google/protobuf/HBaseZeroCopyByteString > at > org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > at > org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > at > org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > at > org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > at > org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > at > org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps] > ... 56 more -- This message was sent by Atlassian JIRA (v6.3.4#6332)