百摩网
当前位置: 首页 生活百科

idea找不到主类(悲剧IDEA突然找不到类了)

时间:2023-06-15 作者: 小编 阅读量: 1 栏目名: 生活百科

那今天这篇的文章,总结一下IDEA运行maven项目找不到相关依赖报错的问题原因以及解决办法。maven依赖下载失败,这就会导致IDEA找不到相关依赖。IDEA本地缓存异常最后一种情况,跟IDEA有比较大关系。IDEA之所以快,那是因为IDEA打开新的工程的时候,它会构建项目索引以及生成相关缓存。那有时候,如果IDEA缓存被破坏,那就有可能导致IDEA无法识别maven依赖,从而导致IDEA无法找到某些类。

我们本地使用 IDEA 运行 maven 项目的时候,有时候运气不好,就会遇到某些 maven 依赖无法正常找到、导入。这就会导致 IDEA 构建项目的时候爆出一堆醒目的红色 Error。

那最近新拉取一个项目源码,本地运行项目,又碰到这种情况。按照以前的解决经验,捣鼓了一下,发现没办法解决。于是研究了一下午,终于解决这个问题。

吐槽一下,刚开始一度以为是这个项目有问题,找了一个同事,发现他的电脑是却可以正常运行这个项目。

那今天这篇的文章,总结一下 IDEA 运行 maven 项目找不到相关依赖报错的问题原因以及解决办法。

网络问题,无法下载 maven 依赖

Maven 默认的中央仓库地址为 http://search.maven.org/#browse,那这是一个外网的地址。

而我们国内访问外网地址,网络速度不仅慢,网络质量还差。这就导致了maven 依赖下载速度过慢,有时候下载还可能会失败。

maven 依赖下载失败,这就会导致 IDEA 找不到相关依赖。

那这个问题解决办法也比较简单,我们可以通过设置镜像(mirrors)地址解决。

打开我们本地 maven 配置文件,默认地址如下:${user.home}/.m2/settings.xml,然后找到 mirrors节点,在这下面添加以下配置:

<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>

lastUpdated 文件导致依赖无法正常导入

当你更新镜像地址之后,有可能还会碰到 maven 依赖无法导入,那恭喜你碰到第二个问题了。

maven 依赖下载的时候,如果碰到网络较差,依赖下载失败,maven 本地将会生成 lastUpdated 为后缀的文件。

那正常的 maven 依赖如下

lastUpdated 为后缀的文件作用如下:

只要 lastUpdated 文件存在,maven 依赖将不会重新下载,所以做简单的方法就是,删除 lastUpdated 文件,重新刷新下载即可。

这里提供一键删除 lastUpdated 文件脚本(macos)

# 这里写你的仓库路径REPOSITORY_PATH=~/.m2/repositoryecho 正在搜索...find $REPOSITORY_PATH -name "*lastUpdated*" | xargs rm -frecho 搜索完

windows 脚本如下:

# windows脚本@echo offrem create by NettQunrem 这里写你的仓库路径set REPOSITORY_PATH=D:\Java\maven-repository\maven-aliyun\repositoryrem 正在搜索...for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (echo %%idel /s /q "%%i")rem 搜索完毕pause

maven 依赖冲突,引用错误

前两个问题主要跟本地网络有比较大的关系,那这个问题,主要是因为 maven 特性导致。

那 maven 有一个依赖传递的特性,如果 A 依赖 B,而 B 依赖 C,那么 C 这个依赖就会通过 B 间接传递给 A。

那如果有多个间接依赖存在,但是彼此版本却不一样,这就会导致依赖冲突

如上所示,如果 A 应用 使用了 E2.0 新增某些类或者方法,那这个时候由于依赖冲突,A 实际上间接依赖的是 E1.0,这就导致 IDEA 编译的时候找不到 E 新增这些类或方法。

那这个问题解决办法,也比较简单,有冲突,我们就直接解决冲突就可以了。

我们可以在 IDEA 中安装一个 Maven Helper 插件,然后打开 pom 文件,点击 Dependency Analyzer 选项,在这里面选中 Conflicts 按钮,就可以看到当前所有冲突的依赖包。

选中其中一个依赖包,就可以在右侧看到所有冲突依赖包的版本。选中其中一个版本,右键选中 Exclude 即可。

上面的办法我们通过排除其他间接依赖从而解决问题。那下面还有一种解决办法,将间接依赖转化为直接依赖。

我们可以把间接依赖直接写在项目 pom 文件里,这样 maven 将会直接使用这个依赖,其他间接依赖将会失效。

maven 间接依赖异常

这个问题,就比较诡异,这也是文章刚开头提到那个问题。

项目中依赖关系如下所示。

A 应用依赖 B ,那 B 是一个开源项目,但是公司内部对 B 进行一些修改。修改之后, B 依赖 C ,所以 A 中使用 C 依赖某些类。

那由于我本地仓库已经下载了 B 开源版本,那当我本地拉取 A 应用源码,那依赖关系就变成了 图中虚线关系。

IDEA 缺失了 C 依赖,这就导致项目编译错误,无法找到 C 中一些类。

那这个问题解决办法,就是在本地仓库找到 B 依赖,然后删除拉取即可。

解决办法比较简单,关键我们需要找到中间这个依赖。

IDEA 本地缓存异常

最后一种情况,跟 IDEA 有比较大关系。

IDEA 之所以快,那是因为 IDEA 打开新的工程的时候,它会构建项目索引以及生成相关缓存。

那有时候,如果 IDEA 缓存被破坏,那就有可能导致 IDEA 无法识别 maven 依赖, 从而导致 IDEA 无法找到某些类。

这种情况我们需要删除原先的缓存以及索引,等待 IDEA 重新构建缓存以及索引即可。

在 IDEA 中点击 File/Invalidate Cached 即可。

最后

如果你如果碰到新的情况,以上几种解决办法都没办法解决,那么只能使用终极解决办法。

重启大法,重启 IDEA,重启电脑

    推荐阅读
  • 坐月子要一直躺着吗 流产坐月子要一直躺着吗

    1、月子期间需要多休息,但不是一定要一直躺着。

  • 炒牛肉又嫩又好吃 芹菜炒牛肉(最好吃的芹菜炒牛肉是这样做的)

    家里其实常吃的肉并不是牛肉,一般情况下都是吃些猪肉,然而近来的食品安全问题,实在是让人觉得堪忧。今天要和大家分享的就是芹菜炒牛肉,还真是第一次这么做呢,很好吃,希望大家喜欢哟。这道芹菜炒牛肉就做好了,希望大家喜欢。

  • 进一步优化税收营商环境举措(营造一流税收营商环境)

    今年以来,宁武县国税局着力深化“放管服效”改革,以改革创新为主线,以便民服务为中心,多管齐下优化税收营商环境,有效激发了市场主体创业创新活力。营改增全面实施后,多项旅游业适用的税收优惠政策出台,使企业得到了实惠,进一步增强了市场竞争力和发展后劲。纳税人获得感提升,正是宁武国税部门深化“放管服效”改革成效的有力印证。

  • 希望一切安好的句子(祈求安好的说说)

    下面希望有你要的答案,我们一起来看看吧!希望一切安好的句子愿一切安好,能与你携手归乡,愿一切顺利,使让你的眼不再泛这银光,愿一切依旧,手中依然能闻到你的芳香。如果不瞌睡,就只好一双眼睛转来转去,强迫性去发现有趣的人事物。是时,遇见,皆为美好,无所谓去留,唯有祝福!)寻一处独处,觅一友畅聊,择一人白首,倾一生所有,苦一心经营,愿一切安好。

  • 云南虫谷蝴蝶的结局(一亿只蝴蝶齐飞)

    最近,位于红河州金平县马鞍底乡的中国·红河蝴蝶谷迎来蝴蝶爆发期。数以亿计的箭环蝶幼虫集中破蛹、羽化成蝶,形成一道生态奇观。目前,蝴蝶谷内蝴蝶爆发数量已经超过1亿只。蝴蝶大爆发,指的是箭环蝶,它是蝴蝶当中较为"长寿"的种类。据专家介绍,目前全世界仅有两个地方发现“蝴蝶大爆发”现象,一处在墨西哥,一处就在中国·红河蝴蝶谷。据介绍,今年蝴蝶谷内的蝴蝶爆发总数预计将达到1.5亿只以上,爆发期将持续到7月。

  • 银行降准是什么意思(银行降准是什么)

    银行降准是什么意思1银行降准的意思就是下调法定存款准备金率,假设银行的法定存款准备金率是15%,A在银行存入1000元,那么银行至少要将1000×15%=150元存到央行的法定存款准备金账户中,剩余的850元就是可以作为银行的流动资金。降准是央行扩张性货币政策之一。央行降低法定存款准备金率,影响银行可贷资金数量从而增大信贷规模,提高货币供应量,释放流动性,刺激经济增长。

  • 摩尔庄园11月活动(摩尔庄园运动会正式启动)

    Hi~各位小摩尔们好。拉姆运动会即将开启,大家的小拉姆都做好体检了吗?为了满足大家对运动会的好奇,庄园带了一大波更新爆料来啦,快来看看本期要点:1.新昆虫上线嗡~~~小摩尔们猜猜这是什么昆虫的声音?听说被叮了的话会变成“大鼻子摩”呢。

  • 火锅起源于中国哪里(火锅起源于中国什么地方)

    火锅起源于中国哪里火锅,古称“古董羹”,因食物投入沸水时发出的“咕咚”声而得名,是中国独创的美食之一,也是一种老少皆宜的食物。火锅一般是指以锅为器具,以热源烧锅,以水或汤烧开来涮煮各类食物的烹调方式,同时亦可指这种烹调方式所用的锅具。典型的火锅食材包括各种肉类、海鲜类、蔬菜类、豆制品类、菌菇类、蛋类制品、主食等,将其放入煮开的清水或特制的高汤锅底烫熟后食用。

  • 高血压会有什么后果(高血糖高血压会有什么后果)

    高血压对脑部的危害脑血管是全身血管中结构较为薄弱的地方,肌层和外膜均不发达且管壁薄弱,血压升高之后会对脑部血管造成严重损伤。如果血压长时间升高,则会导致这些毛细血管发生硬化,出现管腔狭窄的状况。管腔的窄化无疑会减少肾脏供血量,从而导致肾脏慢性缺血而发生萎缩,同时还会弓|发纤维组织的增生,使得肾脏进一步受到损害导致肾功能不全、肾脏衰竭、尿毒症的发生。

  • 角膜炎的症状有哪些 角膜炎的症状有哪些图片

    角膜炎的发病原因虽然不同,但是其病理变化过程通常有着共同的特性,一般可分为侵润期、溃疡期、溃疡消退期和愈合期四个阶段。第一阶段浸润期致病因子侵润角膜,引起角膜缘血管网充血,炎性渗出液及验炎症细胞随机侵入病变区域,产生的酶和毒素扩散,造成角膜组织机构破坏,形成局限性的白色浑浊病灶。此时患者眼睛有明显的刺激症状,表现为畏光、流泪、眼睑痉挛等,若病变部位在瞳孔区可表现出视力下降明显。