idea 运行时报错:
Exception in thread "main" java.lang.NoClassDefFoundError
Caused by: java.lang.ClassNotFoundException: org.apache.flink.api.java.ExecutionEnvironment
但是开发时idea 中,ExecutionEnvironment 是存在的,源码可以跳转和查看.
原因(借用:https://www.cnblogs.com/xyhz0310/p/6803950.html):
NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。
简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。
可以看到是在运行时,无法获取到 org.apache.flink.api.java.ExecutionEnvironment 类,也就是说classpath 没有包含对应的 jar 包
解决方法:
1. 点击设置工程
2. 添加在SDKs 中添加 flink 安装目录下的 lib 下所有jar 包
加入后重新运行就可以了