AlexandrosB created AVRO-1599:
---------------------------------
Summary: Protobuf object newRecord fails with
ClassNotFoundException
Key: AVRO-1599
URL: https://issues.apache.org/jira/browse/AVRO-1599
Project: Avro
Issue Type: Bug
Components: java
Affects Versions: 1.7.7
Reporter: AlexandrosB
When attempting to convert a Protobuf object to Avro I get a runtime error,
stating that my Protobuf object class cannot be found.
{noformat}
Schema protoSchema =
protodata.getSchema(Class.forName("instart.log.AccessLog$AccessLogEntry"));
Object obj = protodata.newRecord(a, protoSchema); // --> FAILS
{noformat}
{noformat}
exception in thread "main" java.lang.RuntimeException:
java.lang.ClassNotFoundException: Failed to load
classinstart.log.Accesslog$AccessLogEntry
at
org.apache.avro.protobuf.ProtobufData.newRecord(ProtobufData.java:145)
at com.instart.decoder.All.main(All.java:88)
Caused by: java.lang.ClassNotFoundException: Failed to load
classinstart.log.Accesslog$AccessLogEntry
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:60)
at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:36)
at
org.apache.avro.protobuf.ProtobufData.newRecord(ProtobufData.java:137)
... 1 more
{noformat}
The class is in the classpath, but the outer class name is AccessLog not
Accesslog. Following the code it seems that the getNamespace() method in the
ProtobufData.java, converts the outer class name to camelCase, and, hence, it
cannot be found later.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)