我绝对不是mvn方面的Maven,但经过两天的努力,我还是放弃了。
我的工作流程:
1.
mvn archetype:generate
-DarchetypeGroupId=org.apache.flink
-DarchetypeArtifactId=flink-quickstart-scala
-DarchetypeVersion=0.10.1
-DgroupId=org.apache.flink.quickstart
-DartifactId=flink-scala-project
-Dversion=0.1
-Dpackage=org.apache.flink.quickstart
-DinteractiveMode=false
2.
cd flink-scala-project
3.
mvn clean package
这是一个版本 log: https://gist.github.com/zavalit/1e78478ebdda827f3454
当我跑的时候
`java -jar target/flink-scala-project-0.1.jar`
我明白了
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/scala/ExecutionEnvironment$
at org.apache.flink.quickstart.Job$.main(Job.scala:41)
at org.apache.flink.quickstart.Job.main(Job.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.api.scala.ExecutionEnvironment$
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 2 more
2条答案
按热度按时间hfwmuf9z1#
您正在构建的胖jar不应该在集群环境之外运行。因此,在集群环境中运行的所有与flink相关的依赖项都从fatjar中排除。
您通常对生成的fatjar所做的是通过将其提交到本地或远程集群
bin/flink run -c org.example.MyJob myFatJar.jar
. 为了快速启动本地集群,可以运行bin/start-local.sh
. 这将启动一个本地集群,您可以向其中提交作业jar。ozxc1zmp2#
默认情况下,flink库不包含在fat jar中,因为它将在运行时由flink cluster提供。要解决这个问题,请更改
scope
中的依赖项pom.xml
,来自provided
至compile
:链接:maven doc