flink:noclassdeffounderror在运行表api查询时出错

njthzxwz  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(470)

我有一个流表api查询,并想写的结果 Table 变成一个 .csv 使用 table.writetoSink(sink) 方法。
当我运行程序时,我得到了以下错误。

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

我的项目中还包含了commons-compiler.jar文件。

u0njafvf

u0njafvf1#

flink的表和sqlapi是基于apachecalcite构建的,它依赖于 commons-compilerorg.codehaus.janino .
错误消息表明 commons-compiler 应用程序中不包含依赖项。一种方法是构建一个包含应用程序所有依赖项的胖jar。flink的quickstart maven架构类型(java和scala)为此提供了一个蓝图。另一种方法是将所有必需的依赖项添加到 ./lib flink设置的文件夹。

相关问题