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

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,重启电脑

    推荐阅读
  • 完美关系在那个台几点播出(你知道吗)

    接下来我们就一起去研究一下吧!完美关系在那个台几点播出当代都市题材电视剧《完美关系》的播出时间:2020年2月18日,首播平台:湖南卫视、爱奇艺、腾讯视频。若是VIP会员24点更新,非会员次日24点观看,2018年7月拍摄,由浙江金溪影视有限公司制作,制作周期12个月,该剧由安建导演,主演:黄轩,佟丽娅,陈数。

  • 堂哥的儿子是我的外甥还是侄子(堂哥的儿子是我的外甥还是侄子呢)

    亦称朋友的儿子,属于客套话,而哥哥的小孩其实就是弟兄的孩子,所以叫“侄子”最恰当不过。姑侄对称,与亲兄弟之子无关。在此之前,兄弟之子称为兄子和弟子,多用作亲属的“转述叙称”称谓。

  • 晨跑和夜跑哪个更减肥瘦身(晨跑和夜跑哪个减肥更快)

    但是对于减肥的人而言,还是要有所限制。

  • 施瓦辛格成功绝非偶然(从穷小子到国际巨星)

    在加入美国国籍后,他就报名参加了美国举办的国际健美比赛,而在本场比赛上,施瓦辛格凭借着接近完美的男性身材而获得了比赛冠军,也因此得到了健美先生的称号。施瓦辛格心里一直有一个梦想——成为美国总统。施瓦辛格弃影从政,成功当选州长施瓦辛格在健美界和影坛所取得的成就也使得他闻名世界,他所积攒下的财富也使得他跻身亿万富翁。另外施瓦辛格还提出了使用清洁能源等政策,为此他还放弃

  • 汉服简介(汉服的介绍)

    与汉人一词类似,汉服中的“汉”字的词义外延亦存在着由汉朝扩大为整个民族指称的过程。汉服“始于黄帝,备于尧舜”,源自黄帝制冕服。定型于周朝,并通过汉朝依据四书五经形成完备的冠服体系,成为神道设教的一部分。汉服还通过华夏法系影响了整个汉文化圈,亚洲各国的部分民族如日本、朝鲜、越南、蒙古、不丹等等服饰均具有或借鉴汉服特征。

  • 山楂的保存方法(山楂的保存方法简述)

    下面内容希望能帮助到你,我们来一起看看吧!山楂的保存方法对于已经切开的山楂,想要保存可以放进盐水中,也可放在阳光下晾晒,让水分尽快蒸发掉。完整的山楂保存可以装入塑料袋中,扎紧袋口放进冰箱冷藏。在容器底部放一层细沙将山楂装入,再放一层细沙密封保存。最简单的方法是放入保鲜膜中,把里面空气放干净,密封袋口保存。

  • 象棋中的马怎么算撇脚(撇脚的具体情况如下)

    以下内容大家不妨参考一二希望能帮到您!象棋中的马怎么算撇脚比如马要向前跳!那马前面也就是马头上如果有棋子就是挡马脚!无论马往哪边跳!马前面有一颗棋子挡着,比如想向前跳,紧挨着马的正前方有一颗棋子,都叫撇脚马,同理,你想向左跳,紧挨着马的左方有一颗棋子也叫撇脚马。

  • 赘婿楼舒婉为什么要杀死家人 赘婿楼舒婉报仇了吗

    在对方强占檀儿时,被宁毅给撞见了,一向有仇必报的他,自然要将楼家给灭掉。之前宣威营的小头目绑走了苏檀儿,最终卖给了楼书恒。之后楼舒婉制作了防水衣送给了刘西瓜,刘西瓜又给了宁毅。之后宁毅发现了防水衣的秘密,急冲冲的跑到了楼家的布店,刚好撞见楼书恒在欺负苏檀儿。如此看来,这一切都是楼舒婉布下的局,就是为了弄死自己的哥哥和父亲。之后他的所作所为,都是为了报复自己之前遭遇的不公。

  • 自制瓷砖胶(瓷砖胶配方及制作方法)

    接下来我们就一起去研究一下吧!自制瓷砖胶先将冷水按比例加入到容器内,开启搅拌机再将胶粉徐徐撒入,高速搅拌10-15分钟即为胶水。批重钙、滑石粉,每1000公斤水加107胶粉13-14公斤、杀菌防腐剂3公斤,或加入甲醛2.5-3公斤,制成胶水。批硅酸盐灰白水泥:每1000公斤水直接加入107胶粉10-11公斤,制成胶水。

  • 研教学评一体化(备教学)

    只有经历这一大循环的教学,才能呈现一种持续评价教与学的目标达成度、教与学的进步度、决定教与学的需求,并实现螺旋上升的态势,使教与学和质量评价更有意义。所以,在“备、教、学、评一体化”教学指导下的教学新格局,应该是一个高效的课堂。