[ https://issues.apache.org/jira/browse/BEAM-4769?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luke Cwik resolved BEAM-4769. ----------------------------- Resolution: Fixed Fix Version/s: 2.7.0 > Types$WildcardTypeImpl cannot be cast to java.lang.reflect.TypeVariable > ----------------------------------------------------------------------- > > Key: BEAM-4769 > URL: https://issues.apache.org/jira/browse/BEAM-4769 > Project: Beam > Issue Type: Bug > Components: sdk-java-core > Affects Versions: 2.5.0 > Reporter: Dzmitry Lazerka > Assignee: Luke Cwik > Priority: Minor > Fix For: 2.7.0 > > Time Spent: 0.5h > Remaining Estimate: 0h > > Hi, > I'm getting the following exception, probably when Beam cannot find a coder > for a wildcard generic type (although I don't think I use any, gotta find). > {code:java} > Exception in thread "main" java.lang.ClassCastException: > org.apache.beam.repackaged.beam_sdks_java_core.com.google.common.reflect.Types$WildcardTypeImpl > cannot be cast to java.lang.reflect.TypeVariable > at > org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:625) > at > org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658) > at > org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620) > at > org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658) > at > org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620) > at org.apache.beam.sdk.coders.CoderRegistry.getCoder(CoderRegistry.java:254) > at > org.apache.beam.sdk.values.PCollection.inferCoderOrFail(PCollection.java:149) > at > org.apache.beam.sdk.values.PCollection.finishSpecifyingOutput(PCollection.java:89) > at > org.apache.beam.sdk.runners.TransformHierarchy.setOutput(TransformHierarchy.java:208) > at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:538) > at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:472) > at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:286) > at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:649) > at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:584) > at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537) > at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491) > at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299) > at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:123) > at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:36) > at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537) > at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491) > at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299) > {code} > The error seems to be in the following lines of CoderRegistry.java @ 629: > {code:java|title=CoderRegistry.java|borderStyle=solid} > } else if (type instanceof TypeVariable) { > coder = getCoderFromFactories(typeDescriptor, Collections.emptyList()); > } else if (type instanceof WildcardType) { > // No coder for an unknown generic type. > throw new CannotProvideCoderException( > String.format("Cannot provide a coder for type variable %s" > + " (declared by %s) because the actual type is unknown due to > erasure.", > type, > ((TypeVariable<?>) type).getGenericDeclaration()), > ReasonCode.TYPE_ERASURE); > {code} > It tries to cast a WildcardType to TypeVariable<?>, although that should've > been caught above on line 621. -- This message was sent by Atlassian JIRA (v7.6.3#76005)