我有一个流表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文件。
1条答案
按热度按时间u0njafvf1#
flink的表和sqlapi是基于apachecalcite构建的,它依赖于
commons-compiler
从org.codehaus.janino
.错误消息表明
commons-compiler
应用程序中不包含依赖项。一种方法是构建一个包含应用程序所有依赖项的胖jar。flink的quickstart maven架构类型(java和scala)为此提供了一个蓝图。另一种方法是将所有必需的依赖项添加到./lib
flink设置的文件夹。