flink error: Exception in thread "main" java.lang.NoClassDefFoundError

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 包

加入后重新运行就可以了

如果是此文是转载文章,本人会附上转载链接,此篇文章的版权归原创作者所属,如果侵权请与我联系,我会删除此文。

若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
作者:feiquan
出处:http://www.cnblogs.com/feiquan/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)
原文地址:https://www.cnblogs.com/feiquan/p/13665571.html