这个问题通常是由于不同版本的flink客户端和集群之间的不兼容导致的。要解决此问题,需要确保flink客户端和flink集群使用相同的版本。另外,可以尝试将flink相关的jar文件放入作业的classpath中,以确保正确的jar文件被使用。
以下是一个示例,如何在flink客户端中运行作业:
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
public class WordCount {
public static void main(String[] args) throws Exception {
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.fromElements("hello world", "hello flink", "hello flink")
.flatMap(new FlatMapFunction>() {
@Override
public void flatMap(String value, Collector> out) {
for (String word : value.split("\\s")) {
out.collect(new Tuple2<>(word, 1));
}
}
})
.groupBy(0)
.sum(1)
.print();
}
}
在这个示例中,我们运行一个简单的word count作业。要确保正确的flink库被使用,可以通过将flink的依赖包添加到pom.xml文件中来实现。例如,添加以下依赖项:
org.apache.flink
flink-java
1.11.2
org.apache.flink
flink-clients_2.11
1.11.2
这样就可以确保正确的flink库被使用,以避免java.lang.IllegalAccessError错误。