IDEA报错:找不到或无法加载主类

时间:2024-03-21 21:03:20

本文解决问题主要参考——无法找到主类问题解决方法的汇总:https://blog.csdn.net/Angry_Mills/article/details/81511130

首先这个问题,产生的原因有很多,需要逐个排查,但是如果根据自己问题发生的情况和特征,可以帮助你更快的定位问题和解决。本文主要描述我定位问题的过程和解决方式

描述一下我的问题,clone一个新的多模块项目,执行报错。我的情况特征如下:

  • 项目在其他同事那里可以正常运行
  • 本地其他多模块项目可以正常运行

所以,问题应该出现在这个项目在本地运行时的一些配置问题,和IDEA的配置以及项目本身无关。两个解决方式,亲测,两种方式都可以解决我的问题。

  • 删除本地项目,参考博客的第六部分,使用通过http链接,使用IDEA来重新从Git上clone项目。
  • 检查项目在IDEA中的一些相关设置——Project Structure和运行方式(Configuration)的设置

如果你的代码已经做了一些本地修改,并由于一些原因,无法提交,第二种方法更适合你,虽然它更麻烦一些。本文接下来会详细介绍一下如何排查问题及解决问题。

一、运行方式

从最简单的开始,可能在运行时你没有准确告诉IDEA主类的位置,我们通过“Edit Configuration”来检查一下,这个主要时配置项目运行时的参数,打开方式如下图。

IDEA报错:找不到或无法加载主类

主要观察下图位置,2是整个项目的文件目录,1是主类(启动类,如果不知道在哪里,点击下拉框,IDEA会自动加载,或者直接连续按两下shift查找main()函数位置即可知),3是1所在的模块(如果不是多模块项目,这里和2一样),如果选择了1,3会自动加载进来。

IDEA报错:找不到或无法加载主类

二、Project Structure配置

如果一没有任何帮助,那么很有可能是项目配置出现问题,简单说IDEA读不懂你的项目结构了。打开Project Structure(参考博客),出现这个问题,一般都是“Modules”配置出现问题。不要急,这里会稍微有一点麻烦,慢慢排查就会解决。

首先来看module的整体结构是否规范。单模块项目,这里比较简单,只有一个主模块,下面打开后有一个spring和一个web,类似下图的“web”目录。这里演示的是多模块项目,分为三类:主模块、启动类所在模块、其他模块。主模块flow也是项目名称,下面什么都没有;启动类所在模块,下面有spring和web的module;其他模块下只有一个spring的module。缺什么点上方的加号,按照图标选择新建需要的模块即可。

IDEA报错:找不到或无法加载主类

然后我们来看模块内部的配置,产生这个问题,只有可能发生在主模块和启动类所在模块里,每个模块有四大类配置,这个问题又仅与其中的“Source”和“Paths”配置相关。

我的问题出在主模块的“Source”配置中。正常右侧的Content Root只有一个文件根目录,我当时这里还有所有其他子模块的目录,处理方法,把没有用的模块叉掉就好了。

IDEA报错:找不到或无法加载主类

同理,启动类所在的模块也是类似的。右侧的Content Root只有本模块所在的根目录,除此之外,还需要做一些项目的基本配置。需要配置好Source、Resource和Excluded目录。

IDEA报错:找不到或无法加载主类

然后检查一下Path目录,我的项目是spring boot目录,生成的class文件放在各个根目录下的target/classes和target/test-classes目录下,其他类型的项目可能略有不同,也可仿照其他人的项目进行配置。

IDEA报错:找不到或无法加载主类

点击OK,配置结束,手工。重新运行一下

三、清理缓存

什么?你还没好?清一下缓存吧。老天保佑这一步执行之后就可以顺利解决问题~

清理缓存重启IDEA  file-->invalidate Cache/restart