现象
正常git拉一个新项目仓库后,尝试运行main方法,发现报错:IDEA找不到或无法加载主类
尝试了各种网上的解决方案,例如清缓存,重新引入项目,重启电脑,删除output path重新添加,手动删除target文件夹重新编译等等,都不能解决这个问题。
先看我的代码类似这样
import org.apache.hadoop.hive.ql.exec.UDF;
public class MyUDF extends UDF {
public static void main(String[] args) {
...
}
}
我尝试删掉 extends UDF之后,发现就能找到这个类运行了,只是报另一个问题:ClassNotFoundException,而这个Class也是跟父类UDF一样出自同一个第三方jar包的,所以我猜测maven包没有正确引入,看了下pom.xml文件
瞬间明白原来是main方法的父类在scope为provided的jar里面,所以IDEA能正常编译但是默认无法运行,因为IDEA默认运行时不会带上provided的jar包的,而编译时会正常通过。
解决办法
右上角“Edit Configurations” 打开面板,
找到“Modify Options”,
勾选“Add dependencies with provided scope...”
保存重新运行,就能正常运行辣。