maven项目手动部署maven tomcat jar,部分jar包丢失

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
工程中依赖这两个jar所以必须加入classpath但是部署到tomcat下会与common/lib冲突有人说解决办法是手动去删有人说解决办法是在JAVA_HOME中加入这两个jar但更好的办法应该是直接不让它部署在maven中:pom.xml代码 &&dependency&&groupId&javax.servlet.jsp&/groupId&&artifactId&jsp-api&/artifactId&&version&2.1&/version&&scope&provided&/scope&&/dependency& & & & ////这是网上有人提出的解决办法,但是在我本地并没有将该问题解决; 我个人的解决办法:1. 到本地的MAVEN仓库中,看看公司内部封装的依赖里面有没有依赖servlet-api.jar和jsp-api.jar,如果有,将其注释掉,如下图:&dependencies&
&!-- servlet (for server runtime) --&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&servlet-api&/artifactId&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jsp-api&/artifactId&
&scope&provided&/scope&
&/dependency& --&
&!-- Spring --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&/dependency&
&!-- portlet (for struts) --&
&dependency&
&groupId&javax.portlet&/groupId&
&artifactId&portlet-api&/artifactId&
&/dependency&
&!-- struts --&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-core&/artifactId&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-spring-plugin&/artifactId&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-jfreechart-plugin&/artifactId&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-portlet-plugin&/artifactId&
&/dependency& &/dependencies&2. 回到eclipse中,找到工程中的pom.xml,轻巧一个空格键,ctrl+s保存下,触发一下更新。3. 删除项目的lib下的servlet-api和jsp-api。4.重启web服务器,问题解决。
阅读(2664)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'MAVEN项目中的servlet-api.jar、jsp-api.jar与tomcat的jar包冲突问题',
blogAbstract:'这是网上的朋友提出的方法,但是我本地环境按照此方法解决不了,如果你有此问题,可以尝试如下的方法,如果解决不了,可以再看看我个人的方法。工程中依赖这两个jar所以必须加入classpath但是部署到tomcat下会与common/lib冲突有人说解决办法是手动去删有人说解决办法是在JAVA_HOME中加入这两个jar但更好的办法应该是直接不让它部署在maven中:pom.xml代码 &&dependency&&groupId&javax.servlet.jsp&/groupId&&artifactId&jsp-api&/artifactId&&version&2.1&/version&',
blogTag:'jsp,maven,eclipse,servlet',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}1036人阅读
为什么只有部分jar包被放到lib目录下,我使用deploy assembly设置加载了Maven Dependcies,结果就是在tomcat下加载了部分jar包,下图中前者是maven项目使用pom加载的全部jar包,第二幅图是eclipse启动tomcat时加载的jar包,明显减少了很多jar包
提问者采纳
有可能是因为scope设定为provided了。
&dependency&
&&&&&scope&provided&/scope&
&/dependency&
provided不是在compile--》runtime都会存在吗?默认为provided
改一下scope试试,再不对我也无能为力了。
谢谢你的回答!因为你的答案解决了我的疑问,确实是本人疏忽,默认为compile想象成了provided,所以导致出错!
客气,加油。
提问者评价
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2070697次
积分:18046
积分:18046
排名:第514名
原创:599篇
评论:158条
(1)(1)(1)(7)(1)(2)(1)(8)(8)(1)(9)(20)(22)(1)(3)(2)(2)(1)(121)(85)(9)(2)(2)(3)(1)(9)(5)(21)(31)(35)(23)(45)(25)(78)(14)&&完maven项目,正常在main方法中运行正常,为什么一旦部署到tomcat运行时就抛出class not found异常?如题所述,着急在线等。。。。。1个牛币所有回答列表(3)Eclipse中Maven项目无法在Tomcat中运行  1. 出现ClassNotFound异常  看看异常信息,都是Maven依赖包中的类,项目-&属性-&Deployment Assembly-&Add-&Java Build Path Entries-& Maven Dependencies -& Finish -&OK  再次运行,OK!  2. 后来在Maven中引入自己开发的工具包(maven的),然后再次运行就出错了,下面逐步贴出错误:  1) test项目添加自己开发的包后,保存,出现异常  An internal error occurred during: &Updating status for Tomcat v6.0 Server at localhost...&.  java.lang.NullPointerException  2) 当时没在意,Eclipse有时也经常弹出某个错误,重启就OK了,原来还以为是个可以忽略的问题,准备运行项目test  右键 -& Run as -& Run on server  运行信息一闪而过,启动好了?打开页面访问,一个大大的404。好吧,回到Eclipse,拉大控制台窗口,原来是启动test出现了异常:  java.lang.IllegalArgumentException: Document base ....\.metadata\.plugins\org.eclipsre\tmp1\wtpwebapps\test does not exist or is not a readable directory  之前还好好的,是什么问题呢,昨天晚上是纠结了很久,最后定位是在Maven Dependencies上面,删除第一步配置的那个Deployment Assembly的之后报ClassNotFound异常,不过tomcat的运行时目录下面还是可以发现有吧test项目那些文件都发布到运行时目录下,加上第一个配置的后,就会出现上面的异常?  问题定位:添加自己的工具包前,是可以访问的,那么问题肯定就在这里了,这个不是已经使用maven install添加到maven仓库了么?看到prom.xml的可视化视图  最佳答案这个,,,,很有可能是你的某些第三方jar包没有发不到tomcat中,你查看下tomcat中你的项目WEB-INF/lib下是否有你需要的jar包,如果没有在eclipse通过编辑这里配置项目发布到tomcat的信息:备注:你直接运行main函数是在eclipse的环境中,正常说明jar包在eclipse中可以正常被加载到。但是在tomcat的环境中并不一定能够运行成功。请务必区分这两个不同的运行环境,不要混为一谈。等等等等等等等等等等完等相关问答完等完等完等等等等完等等最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友我们在做web开发是,经常都要在eclipse中搭建web服务器,并将开发中的web项目部署到web服务器进行调试,在此,我选择的是tomcat服务器。之前部署web项目到tomcat进行启动调试都很正常,今天突然出现无法启动情况,启动过程报如下错误:
.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener&& &at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)&& &at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)&& &at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)&& &at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)&& &at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)&& &at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727)&& &at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)&& &at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)&& &at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)&& &at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)&& &at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)&& &at java.util.concurrent.FutureTask.run(FutureTask.java:166)&& &at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)&& &at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)&& &at java.lang.Thread.run(Thread.java:722)
大家常用的做法是,project clean 。maven clean maven install
其实仔细分析报错的原因是类找不到,该类依赖于-web-XXXX.jar,看了下maven依赖库,该依赖是存在的,那是怎么回事,然后再看tomcat目录下的webapps中部署的项目,项目已经部署成功,相应的class文件和静态文件都有了,但仔细一看,在WEB-INF下缺少了lib文件夹,才明白为什么找不到org.springframework.web.context.ContextLoaderListener类了。
为什么在eclipse中启动tomcat时没有将lib拷贝过来,想想之前碰到了项目部署设置的问题。解决办法如下:
&右击项目-&properties-&找到Deployment Assembly,右边便是编译打包的配置,看是不是缺少了lib库的依赖,我的就是,点击Add,添加maven依赖库。最后列表如下
再重新启动tomcat,启动成功!
阅读(...) 评论()

我要回帖

更多关于 maven tomcat 热部署 的文章

 

随机推荐