eclipse tomcat May be locked by another process 解决

来源:互联网 发布:js切换视频播放 编辑:程序博客网 时间:2024/06/05 17:06

eclipse开发,发布一项目A,在不关闭Tomcat的情况下,再发布一新项目B,如果所发布的新项目B有用到项目A中lib中的jar,则eclipse会报异常:


打开Details:e


这是说Tomcat发布失败,原因是它遇到了多个错误。错误描述是:不能删除项目的发布地址(项目的真实路径)中的lib目录下的*.jar。这是因为它已被其他进程锁住。

出现这种异常的原因是:Tomcat在发布项目时会把项目中的lib目录下的jar reload到发布地址中的lib目录下,若上一项目未关闭Tomcat,且新发布的项目中lib目录下包含上一项目lib目录下的jar,这样由于上一项目已被发布,相同的jar已被占用,故报此异常。

出现这种异常会导致的2个严重的后果:

1.新发布的项目可以正常发布,但上一项目中与新发布项目中所用到的共同的jar所处理的业务会被清零、销毁。比如在上一项目中我利用“commons-fileupload-1.3.1.jar”上传了2张图片,图片上传至项目WebContent目录下的mypic包中。如果我在Tomcat不关闭的情况下再发布一新项目,新项目中也会用到commons-fileupload-1.3.1.jar”,则在报以上异常后,新项目可正常发布,但上一项目中WebContent目录下的mypic包的2张上传的图片会被销毁(也就是说白做了)。

2.若再次发布上一项目,则导致该项目发布失败,报404错误,如下图所示:


解决方法:

1.在发布新项目前,关闭Tomcat.

2.如下面这位网友的处理办法,只需在tomcat配置中勾选“serve modules without publishing”即可。


eclipse中开发,项目部署在tomcat7中,每次修改文件之后,tomcat要自动重新部署,就会报这个错误

Could not delete D:/workspace-jee-indigo/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/ssh/WEB-INF/lib. May be locked by another process.

在网上百搜不得解啊!

这个问题我怀疑是不是因为tomcat启动太快,自己的进程又要使用lib下的jar又要删除lib下的jar造成的。

后来研究tomcat的配置,双击tomcat

 


各个配置研究之后发现勾上Server modules without publishing 问题能够解决,这个配置的意思 让tomcat直接使用WebContent下的东西,不再需要发布到

D:\workspace-jee-indigo\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ssh\WEB-INF  下面,每次tomcat重新部署也就不再需要删除WEB-INF下面的内容,问题就得以解决。

这个面板上的其他相关配置参考 :http://my.oschina.net/uniquejava/blog/80945

(1)serve modules without publishing
tomcat直接使用WebContent下的东西
省去publish<workspace>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

勾上它会将tmp0\wtpwebapps下相关的resources删除,
同时会修改Servers/Tomcat v6.0 Server at localhost-config/servers.xml中的serveModulesWithoutPublish=true
以及tmp0/conf/server.xml中的<Context>配置
(2)publish module contexts to separate XML files

勾选 上后会修改Servers/Tomcat v6.0 Server at localhost-config/servers.xml中的saveSeparateContextFiles=true

同时将tmp0/conf/server.xml中关于该app<Context>元素

移动到tmp0/conf/Catalina/localhost/appName.xml

 

修改JSP后立即生效(在没有勾选Server modules without publishing的情况下,如果勾选,修改jspjs总会立即生效):

Ctrl+Shift+R,找到server.xml

reloadable="true"改为false,这样保存JSPTomcat不会自动重启,若勾选Server modules without publishing修改class也不会自动重启

勾选上Automatically publish  when resources change

这样修改JSPtomcat能热加载。。(这个选项对java文件无效,关了以后每次也能热加载)

0 0
原创粉丝点击