gpt4 book ai didi

java - 为什么运行示例 flink 应用程序会抛出此错误?

转载 作者:行者123 更新时间:2023-12-02 08:48:24 24 4
gpt4 key购买 nike

我正在尝试运行 https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/projectsetup/java_api_quickstart.html 中描述的演示应用程序.

我使用给定的脚本生成了项目:

curl https://flink.apache.org/q/quickstart.sh | bash -s 1.10.0

并使用以下内容构建:

mvn clean package

但是当我尝试运行时:

java -jar targets/java -jar quickstart-0.1.jar

我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/environment/StreamExecutionEnvironment
at org.myorg.quickstart.StreamingJob.main(StreamingJob.java:39)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.api.environment.StreamExecutionEnvironment
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 1 more

我在另一个文件夹中有 flink,并运行了 bin/start_cluster.sh。我还能够毫无问题地运行预打包的 flink 应用程序(在/bin 中)。

最佳答案

默认情况下,快速启动脚本生成的 pom.xml 不会包含通过 java -jar ... 直接运行 jar 所需的 Flink 依赖项。为了以这种方式运行 jar,您需要构建一个 uber-jar,其中包含所有必需的 Flink 依赖项。您可以通过激活配置文件add-dependency-for-IDEA来完成此操作:

mvn clean package -Padd-dependencies-for-IDEA

或者将 Flink 依赖项的范围从 provided 更改为 compile

之所以默认不包含Flink的依赖,是因为当你向Flink集群提交作业时,那么这个集群就已经包含了这些依赖。因此,可以通过将依赖项设置为 pom.xml 中提供的依赖项来保持生成的用户 jar 的大小较小,这相当于不将它们包含在 jar 中。

关于java - 为什么运行示例 flink 应用程序会抛出此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60938250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com