You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "shizhengchao (Jira)" <ji...@apache.org> on 2022/03/08 03:23:00 UTC

[jira] [Created] (FLINK-26527) ClassCastException in TemporaryClassLoaderContext

shizhengchao created FLINK-26527:
------------------------------------

             Summary: ClassCastException in TemporaryClassLoaderContext
                 Key: FLINK-26527
                 URL: https://issues.apache.org/jira/browse/FLINK-26527
             Project: Flink
          Issue Type: Bug
          Components: Client / Job Submission
    Affects Versions: 1.14.3, 1.13.5
            Reporter: shizhengchao


When I try to run sql using flink's classloader, I get the following exception:
{code:java}
Exception in thread "main" java.lang.ClassCastException: org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory
    at org.codehaus.commons.compiler.CompilerFactoryFactory.getCompilerFactory(CompilerFactoryFactory.java:129) 
……{code}
my code is like this:
{code:java}
Configuration configuration = new Configuration();
configuration.set(CoreOptions.CLASSLOADER_RESOLVE_ORDER, "child-first");
List<URL> dependencies = FlinkClassLoader.getFlinkDependencies(System.getenv(ConfigConstants.ENV_FLINK_HOME_DIR));
URLClassLoader classLoader = ClientUtils.buildUserCodeClassLoader(
        dependencies,
        Collections.emptyList(),
        SessionContext.class.getClassLoader(),
        configuration);
try (TemporaryClassLoaderContext ignored = TemporaryClassLoaderContext.of(classLoader)) {     tableEnv.explainSql(sql);
     //CompilerFactoryFactory.getCompilerFactory("org.codehaus.janino.CompilerFactory");
} {code}
But, if you change `classloader.resolve-order` to `parent-first`, everything works fine



--
This message was sent by Atlassian Jira
(v8.20.1#820001)