Maven Flink错误:无法找到或加载主类

Maven Flink错误:无法找到或加载主类,maven,apache-flink,jmh,Maven,Apache Flink,Jmh,我正在尝试运行那些Flink基准测试: 我使用maven和该命令生成了jar文件: mvn clean package -Pbuild-jar ./bin/flink run -c org.apache.flink.benchmark.WindowBenchmarks ~/flinkBenchmarks/target/flink-hackathon-benchmarks-0.1.jar 然后,我尝试使用以下命令在Flink集群上运行基准测试: mvn clean package -Pbui

我正在尝试运行那些Flink基准测试:

我使用maven和该命令生成了jar文件:

mvn clean package -Pbuild-jar
./bin/flink run -c org.apache.flink.benchmark.WindowBenchmarks ~/flinkBenchmarks/target/flink-hackathon-benchmarks-0.1.jar
然后,我尝试使用以下命令在Flink集群上运行基准测试:

mvn clean package -Pbuild-jar
./bin/flink run -c org.apache.flink.benchmark.WindowBenchmarks ~/flinkBenchmarks/target/flink-hackathon-benchmarks-0.1.jar
我已经使用-c选项将我想要运行的基准(WindowBenchmarks)的主要部分添加到类路径中

最后,我得到了这个错误:

#JMH版本:1.19
#虚拟机版本:JDK 1.8.0_151,虚拟机25.151-b12
#VM调用程序:/usr/lib/jvm/java-8-oracle/jre/bin/java
#VM选项:-Dlog.file=/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/log/flink-user-client-mypc.log-Dlog4j.configuration=file:/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/conf/log4j-cli.properties-Dlogback.configurationFile=file:/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/conf/logback.xml-Djava.rmi.server.hostname=127.0.0.1-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false
#预热:10次迭代,每次1s
#测量:10次迭代,每次1s
#超时:每次迭代10分钟
#线程:1个线程,将同步迭代
#基准模式:吞吐量,操作/时间
#基准:org.apache.flink.Benchmark.WindowBenchmarks.sessionWindow
#运行进度:完成0.00%,预计时间00:04:00
#叉子:3个中的1个
错误:无法找到或加载主类org.openjdk.jmh.runner.ForkedMain
错误:无法找到或加载主类org.openjdk.jmh.runner.ForkedMain
#运行完成。总时间:00:00:00
基准模式Cnt分数误差单位

该程序不包含Flink作业。可能您忘记在执行环境中调用execute()。
flink benchmarks
是一个存储库,其中包含多组微基准测试,这些微基准测试设计用于在单机上运行,而不是在集群上运行。各种类(测试用例)中定义的
main
函数是“JMH”运行程序,而不是Flink程序。因此,您可以执行整个基准测试套件(大约需要1小时):

mvn-Dflink.version=1.5.0干净安装exec:exec

或者,如果您只想执行一个基准,最好的方法是手动执行所选的主函数。例如,在IDE中(不要忘记选择
flink.version
,属性的默认值在
pom.xml
中定义)


也有,但我已经很久没有尝试过了。

你能检查一下jar中是否包含“org.openjdk.jmh.runner.forkedman”吗?好的,即使类在jar中,我也可以在本地复制它。谢谢Piotr。基准测试创建者说,这可以在Flink集群上运行。pom文件中提供的说明表明,为了在集群上运行基准测试,首先需要使用
mvn clean package-Pbuild jar
生成jar文件。然后在flink集群中输入jar文件。我的问题就在这一步上,因为好像少了什么,但我找不到。不客气。然而,我可以向您保证,这不是预期的用例,因为碰巧我是这些基准测试的原始创建者,与Nico一起:)这个pom可能是复制过来的,或者是由脚本创建的,这就是为什么它最终会产生如此误导性的pom。很抱歉(这个项目是作为hackathon的一部分创建的)-我已经修复了这个问题并添加了适当的自述文件。感谢添加自述文件,它是清晰和有用的。我想问的是,在pom文件的哪一点,flink实际上被初始化了,以及如何设置它。我找不到这样做的代码。我能看到Flink可以初始化的唯一方法是在jmh.Main类中,因为我在pom文件或内部Maven构建和打包中找不到它。你修改jmh.Main代码来设置flink了吗?非常感谢你!很抱歉这么晚才回复@OrionPapadakis,我现在才注意到你的问题。
flink benchmarks
中的一些基准根本没有使用flink,而是设置了一些模块/类测试。其他人正在使用
LocalExecutionEnvironment
运行Flink应用程序,这与您在本地计算机上运行Flink应用程序时使用的完全相同,而无需将作业提交到集群。