发布项目到tomcat报错IndexOutOfboundsException

最近部署一个从github上拉取的maven项目,遇到各种问题,最终解决成功运行,在此记录一下解决过程。

一,maven下载jar包失败
该项目依赖了大量jar包,很多包下载失败了,本地仓库里面都是一些 lastUpdated 的文件,只有把这些文件清理掉之后才能再次让maven下载,如果一个一个目录去删就太费时间了,因此在网上淘了个bat脚本直接删除lastUpdated 文件,脚本如下:

rem -- 这里写你的仓库路径
set REPOSITORY_PATH=F:\maven_repository
rem -- 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause

二,eclpse的Markers视图使用
虽然jar包已经下载完成,但是很有可能有些jar包有问题,比如某个jar包本身只有200kb,但是maven下载下来这个jar包可能有250kb,明显这个jar包下载的有问题,其实这个jar文件是损坏了的,根本读取不了,所以项目上面有个红叉或者感叹号但是代码里面没有任何报错,这时打开eclipse的window--show view--other..--搜索Markers打开这个视图,看里面红色的部分,都是提示某个jar包损坏(后面有个感叹号),将本地仓库中这些jar包全部删掉重新触发maven下载

三,明明maven依赖里有xx.jar的com.xx.A.class这个文件,但是代码里面import com.xx.A这行偏偏报错,这也是xx.jar文件损坏的原因,删掉重新下载

四,好不容易项目都不报错了,但是发布到tomcat中报错提示IndexOutOfboundsException,网上查说也是本地仓库jar包的问题,但不知道到底是哪些jar包有问题(Markers视图没报错了),都说删掉整个本地仓库,但是我的本地仓库太大了,删掉后不知道要下载多久,于是我直接打war包(eclipse上对项目右键--run as--maven build...--输入clean package 勾选skip tests 进行打包)后放到tomcat中启动,报错[....xxx.jar] from WEB-INF/lib java.util.zip.ZipException,显然是xxx.jar包是损坏的,于是删掉本地仓库的xxx.jar重新下载然后重新启动tomcat,又提示另一个yyy.jar有问题,就这样处理差不多10个jar包,感觉不知道还有多少要处理,偶然发现maven打包过程中的日志里面有一些WARN信息,大概是xxx.jar... LOC ...这样的信息,说明这个jar包是损坏的,这样可以一次性看到所有损坏的jar,将这些jar删除掉再下载,打包没有上述WARN日志说明真的是没有问题了

五,maven实在下载不了的,直接在http://mvnrepository.com/ 中搜索出该jar下载后放到本地仓库对应目录中

你可能感兴趣的:(maven)