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

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、不是SUV车型就能越野,有的SUV甚至还不如轿车。

  • 东莞有没有地铁(地铁站点有哪些)

    接下来我们就一起去了解一下吧!东莞有没有地铁有,已于2016月5月27日开通试运营,东莞地铁2号线是东莞开建的首条地铁线路,也是东莞最先开通的轨道交通线路。2号线全长37.8公里,设站15个,其中一期工程为东莞火车站至虎门火车站。东莞地铁2号线站点:东莞火车站、茶山站、榴花公园站、下桥站、天宝站、东城站、旗峰公园站、鸿福路站、西平站、蛤地站、陈屋站、寮厦站、珊美站、展览中心站、虎门火车站。

  • 7月15日蚂蚁庄园答案(蚂蚁庄园10月17日内蒙古自治区的省会在哪里)

    支付宝蚂蚁庄园小课堂10月17日今日答案是什么?小鸡宝宝考考你,内蒙古自治区的省会在哪里?想必很多朋友都想知道支付宝蚂蚁庄园今天答题答案,正确回答就可以领取180g饲料喂养小鸡哦。

  • 睡前用什么泡水喝补气血(睡前吃5片活血不怕堵)

    丹参是历代医家公认的活血化瘀药,也是当今临床防治心脑血管病的常用药。三七富含三七皂苷、三七多糖、三七素、黄酮有效成分,具有止血、活血化瘀、抗衰老、降血脂、降血糖、提高机体免疫功能等作用。在中药里,三七通血管、降血脂的效果是最好的。一般而言,服用三七,能通调血脉,改善微循环,降低血黏度,防止血栓形成,从而减少老年病的发生,延缓衰老进程。《明心歌》钱多钱少,够吃就好。

  • 牛肉末怎么做好吃(加入二种酱只需四步)

    辣椒酱色泽红艳,加入牛肉末中起到非常好的调色作用。炒肉末做法第一步:炒牛肉末这一步非常关键,是决定整个菜好吃与否。另外,牛肉末本身的油脂含量比较高,不要在锅中加油。如果提前加入调味料或油脂,结果肉末就会变得软绵,影响口感。这两种酱料的加入,一来可以给炒肉末增香,二来让炒肉末的颜色变得更加鲜红。辣椒酱一加入,肉色立刻变得诱人食欲。

  • 夏季营养美食(夏季营养美食推荐)

    夏季营养美食芹菜粥,原料:芹菜40克,粳米50克,葱白5克。放进葱,小炒一会儿,再加粳米和水,等到煮成粥状,就把芹菜放进去,最后调味,完成。将橙子和胡萝卜放到榨汁机榨成汁,完成。做法:首先取皮蛋和咸蛋,放进锅中蒸,大概15分钟后拿出来并放置到冷却,再把蛋壳剥掉,成成小粒备用。将生姜切片,洗净菠菜。倒油进锅烧开,然后把姜片放进去小炒一会儿,再将蛋粒加进去炒。

  • 如何解除新浪微博支付宝绑定(新浪微博怎么绑定和解绑淘宝支付宝账号)

    人们总是过着每日必刷的生活,微博早已与我们息息相关,新浪微博也有微博钱包和支付功能,那么微博该怎样绑定和解绑淘宝支付宝账号呢?,现在小编就来说说关于如何解除新浪微博支付宝绑定?04在这个界面我们看到了支付宝账号和淘宝账号的绑定状态,点击后方的“解除绑定”。05这时会弹出一个输入窗口,只要我们正确输入支付密码就可以解除绑定。

  • 万圣节在国外是大节日吗(西方传统节日万圣节习俗)

    夜幕降临,孩子们便迫不及待地穿上五颜六色的化妆服,戴上千奇百怪的面具,提上一盏杰克灯跑出去玩。收拾停当后,一群群装扮成妖魔鬼怪的孩子手提杰克灯,跑到邻居家门前,威吓般地喊着:要恶作剧还是给款待、给钱还是给吃的。万圣节通常与灵异的事物联系起来。万圣夜的主题是鬼怪、吓人,以及与死亡、魔法、怪物有关的事物。

  • 冬笋的保存方法(冬笋的保存方法详解)

    我们一起去了解并探讨一下这个问题吧!冬笋的保存方法盐水浸泡法:新鲜的冬笋保质期特别短,想把它长期保存,必须要采用一定的方法,其中盐水浸泡就是长期保存冬笋的最好方法之一。平时可以把采收以后的新鲜冬笋去掉根部的泥沙,直接放入的咸菜缸中,然后在把食用盐和清水放在一起调匀,制成浓盐水,直接倒入到咸菜缸中,密封保存,这样能让新鲜的冬笋保存很长时间。记得在食用以前,必须用清水浸泡,进行脱盐处理。

  • 浏览器高级设定(执行力提升浏览器设置篇)

    小壮提升执行力,透过五个方面优雅商人弓箭的合成形象1、家庭生活2、学习成长3、家庭4、人脉关系5、财富学习与成长,互联网是一个很好的工具,我们从互联网获取知识,有几个阶段:数据、信息、知识、智慧。小壮的浏览器书签是这样的,好处是可以把各种网页有序的保存,使用的时候可以快速的找到,提高我们大脑提取知识的执行力。