[ 
https://issues.apache.org/jira/browse/FLINK-5690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15856009#comment-15856009
 ] 

Andrey commented on FLINK-5690:
-------------------------------

Your project contains dependency on protobuf 2.5.0 which means protobuf was 
loaded into ClasspathTest's classloader. So when you execute "String escaped = 
(String) m.invoke(instance, "test ' me ");" it will re-use same classloader. 

I propose the following two options:
1) create separate project with protobuf dependency and TextFormatterTest. Then 
reference this jar during childClassloader instantiation.
2) Submit into flink cluster (not local execution!) simple job which executes 
TextFormatterTest.escapeIt().

> protobuf is not shaded properly
> -------------------------------
>
>                 Key: FLINK-5690
>                 URL: https://issues.apache.org/jira/browse/FLINK-5690
>             Project: Flink
>          Issue Type: Bug
>          Components: Build System
>    Affects Versions: 1.1.4, 1.3.0
>            Reporter: Andrey
>            Assignee: Robert Metzger
>
> Currently distributive contains com/google/protobuf package. Without proper 
> shading client code could fail with:
> {code}
> Caused by: java.lang.IllegalAccessError: tried to access method 
> com.google.protobuf.XXXX
> {code}
> Steps to reproduce:
> * create job class "com.google.protobuf.TestClass"
> * call com.google.protobuf.TextFormat.escapeText(String) method from this 
> class
> * deploy job to flink cluster (usign web console for example)
> * run job. In logs IllegalAccessError.
> Issue in package protected method and different classloaders. TestClass 
> loaded by FlinkUserCodeClassLoader, but TextFormat class loaded by 
> sun.misc.Launcher$AppClassLoader



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to