解决本地有jar包,Idea上Maven却报红。

明明本地有这个jar包,但是idea上一直报红,也不能运行啊啊啊啊啊啊啊!!!!

        网上的很多方法都试了也没用,比如去setting里面改配置,把pom里依赖删掉刷新,加回来再刷新也不行。后面发现jar包里面有一些奇奇怪怪的文件,如:xxxx.lastUpdated的文件。查了下,这个文件是由于下jar包的时候,网络原因导致没有下载下来就会生成这个文件。并且在你下次网络好了之后下载还是下载不下来,罪魁祸首就是这些以.lastUpdated结尾的文件。

        原因:Maven在下载jar包的过程中,文件会以lastUpdated作为临时扩展名。文件下载完成后,Maven会将“lastUpdated”扩展名去掉。
        如果下载一半连不上网,导致下载失败,那么Maven就放任文件保持临时扩展名“lastUpdated”不管。
        当我们下一次强制要求Maven重新下载jar包时候,Maven看到这个文件以“lastUpdated”结尾,那么Maven就会无视“下载”命令。
        所以对于以“lastUpdated”为扩展名的文件需要手动删除,然后再让Maven重新下载。

解决方案:
        基本做法:删除以“lastUpdated”结尾的文件,重新下载。
        问题:Maven仓库使用一段时间后,以“lastUpdated”结尾的文件会非常多,手动删除不现实。
        正确做法:借助clearLastUpdated.bat脚本文件批量处理。
        clearLastUpdated.bat文件设置
        第一步:将clearLastUpdated.bat文件放入Maven仓库根目录,例如:D:\java\repository
        第二步:使用文本编辑器打开,修改下面两项,
        CLEAR_PATH设置为Maven仓库所在盘符
        CLEAR_DIR设置为Maven仓库的根目录,一定要使用非中文没有空格的目录
        SET CLEAR_PATH=D:
        SET CLEAR_DIR=D:\java\repository
        编辑完成后双击,clearLastUpdated.bat文件,界面输入

        ​ 输入 1 清理*.lastUpdated *
​         输入 2 查看*.lastUpdated *
​         输入 3 退 出 *

下载完成但内部损坏
        具体表现
        表面上看起来,jar包并不是以“lastUpdated”结尾,表示已经下载完成。但是,程序编译或运行的时候报错。比如:找不到xxx类错误,而且通常这个类不是我们编写的;又或者找不到xxx方法,而且通常这个方法不是我们编写的。
        其他表现往往还体现为一些莫名其妙的错误,特别是往往和我们编写的代码没有直接关系。
原因分析
        到Maven仓库中找到疑似下载失败的jar包
        使用文件校验工具文件校验
        打开工具,将要验证的jar包拖拽进工具界面,比较SHA1值,u 一致:确定jar包下载成功,内部正确没问题,u 不一致:确定jar包内部损坏。
        文件校验工具
        第一步:我们打开
        第二步:把指定的拖到文件校验工具当中
        拖缀后
        然后打开.sha1结尾的文件,例如:aopalliance-1.0.jar.sha1,然后比较两个SHA1码是否相等即可
        如果不一致, 根据依赖信息定位jar包在仓库里位置,删除jar,再次重写刷新pom.xml文件,就可以了。

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用IntelliJ IDEA开发项目时,如果在依赖的jar包上出现红色下划线,但是我们的本地仓库确实已经存在该jar包,可能有以下几种情况和解决方法: 1. 本地仓库路径问题:首先我们需要确认本地仓库的路径是否正确配置,可以通过进入IntelliJ IDEA的设置->Build, Execution, Deployment->Maven->User Settings选项,查看本地仓库路径是否正确设置。 2. 依赖jar包版本问题:如果本地仓库中存在该jar包的不同版本,而在项目中使用了其他版本,会导致出现红色下划线。可以检查项目的pom.xml文件中依赖的版本是否与本地仓库中的版本一致。 3. 依赖关系问题:有时候,jar包依赖的其他jar包可能没有正确引入导致出现红色下划线。可以通过在项目的pom.xml文件中确认依赖的完整性和正确性,确保所有相关的依赖都被正确引入。 4. Maven仓库索引问题:有时候,Maven仓库的索引可能过期或者损坏,导致IntelliJ IDEA无法准确地找到依赖的jar包。可以尝试更新Maven仓库的索引,方法是在IntelliJ IDEA中点击菜单栏的"Build"->"Rebuild Project",让IDEA重新构建项目。 5. 清理缓存问题:有时候,IntelliJ IDEA的缓存可能会导致建议错误地显示红色下划线。可以尝试通过点击菜单栏的"File"->"Invalidate Caches / Restart"来清理IDEA的缓存,然后重新构建项目。 总之,当IntelliJ IDEA显示红色下划线,但本地仓库确实存在jar包时,我们需要检查本地仓库路径、依赖jar包版本、依赖关系、Maven仓库索引以及清理缓存等方面,来排查和解决该问题。 ### 回答2: IntelliJ IDEA是一款功能强大的集成开发环境,而Maven是一个软件项目管理与构建自动化工具。当在IDEA中使用Maven构建项目时,常常会出现红色下划线,表示IDEA在编译期间未能找到所需的jar包。这种情况通常出现在本地仓库中有jar包的情况下。 造成这种情况的可能有几个原因。首先,检查一下是否在IDEA中正确配置了Maven。在IDEA的设置中,我们可以指定本地Maven的安装路径和Maven仓库的位置。确保这些设置都是正确的。 其次,还需要检查Maven的配置文件。Maven使用pom.xml文件管理项目的依赖关系,我们可以在这个文件中指定所需的jar包。请确保pom.xml文件中的依赖项是正确的,并且版本号能够在本地仓库中找到。 另外,如果本地仓库中的jar包是通过手动安装添加的,可能需要手动更新Maven的本地仓库索引。在IDEA中,可以通过点击"Reimport All Maven Projects"按钮来重新导入并更新依赖项。 最后,如果仍然存在红色下划线问题,可以尝试清理IDEA的缓存。在IDEA的"File"菜单中,选择"Invalidate Caches / Restart"选项,然后重新启动IDEA。 总之,当出现IntelliJ IDEAMaven依赖项红色下划线但本地仓库中有jar包时,需要检查IDEAMaven的配置,确保依赖项正确,并重新导入和更新Maven项目。如果问题仍未解决,可以尝试清理IDEA的缓存。 ### 回答3: 当IntelliJ IDEA在使用Maven构建项目时,经常会出现红色下划线的情况,这是因为IDEA无法找到相应的依赖jar包。 首先,检查一下你的本地Maven仓库是否已经正确地下载和安装了所需的jar包。你可以通过在命令行中运行"Maven install"或"mvn install"命令来确保所有依赖项已经正确地安装到本地仓库。如果安装成功,你应该能够在本地Maven仓库的正确路径下找到对应的jar文件。 然后,确保你的pom.xml文件中正确地引入了相应的依赖。查看pom.xml文件,确保你使用了正确的groupId、artifactId和version来指定依赖项。如果你在使用私有仓库或本地仓库,请确保你已经正确配置了仓库地址。 如果以上步骤都已经确认正确,但是仍然出现红色下划线提示缺少依赖包,可以尝试以下解决方法: 1. 点击红色下划线,选择"Add Maven Dependency",IntelliJ IDEA会自动搜索并添加相应的依赖项。 2. 在IDEA中,点击"File" -> "Invalidate Caches / Restart",然后重新启动IDEA。有时候缓存问题会导致IDEA无法正确读取本地仓库。 3. 在Maven工具窗口中,右键单击项目,选择"Reload All Maven Projects"重新加载Maven项目。 如果以上方法仍然无法解决问题,可能是你的依赖项在远程Maven仓库中没有被正确地发布或更新。在这种情况下,你可以尝试手动下载所需的jar包,并通过"Add JAR/Folder"选项将其添加到项目的依赖中。 总结一下,当IntelliJ IDEA中的Maven项目出现红色下划线但本地仓库已经有jar包时,首先确保本地仓库已经正确地安装了所需的依赖包,然后检查pom.xml文件中的依赖配置是否正确,如果仍然无法解决问题,可以尝试重新加载项目或手动添加依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值