java-Flink:NoClassDefFoundError当运行表API query时


0

我有一个流表API query,希望使用table.writetoSink(水槽)方法。

当我运行这个程序时,我得到了以下错误。

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/commons/compiler/CompileException
at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:580)
at org.apache.flink.api.table.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:102)
at org.apache.flink.api.table.BatchTableEnvironment.sql(BatchTableEnvironment.scala:132)
at table_streaming_test.main(table_streaming_test.java:59)
Caused by: java.lang.ClassNotFoundException: org.codehaus.commons.compiler.CompileException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more

我还包括了下议院-编译器.jar我的项目中的文件。

1 答案


0

Flink的表和sqlapi是基于apachecalcite构建的,apachecalcite依赖于网址:codehaus.janino.

错误消息表明您的应用程序中没有包含commons编译器依赖项。一种方法是构建一个包含应用程序所有依赖项的 fat jar。Flink的quickstart Maven architypes(Java和Scala)提供了一个蓝图。另一种方法是将所有必需的依赖项添加到Flink设置的./lib文件夹中。


我来回答

写文章

提问题

面试题