eclipse tomcat May be locked by another process 解决
2015-08-06 17:51
543 查看
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的情况下,如果勾选,修改jsp或js总会立即生效):
Ctrl+Shift+R,找到server.xml
将reloadable="true"改为false,这样保存JSP时Tomcat不会自动重启,若勾选Server modules without publishing修改class也不会自动重启
勾选上Automatically publish when resources change
这样修改JSP后tomcat能热加载。。(这个选项对java文件无效,关了以后每次也能热加载)
打开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的情况下,如果勾选,修改jsp或js总会立即生效):
Ctrl+Shift+R,找到server.xml
将reloadable="true"改为false,这样保存JSP时Tomcat不会自动重启,若勾选Server modules without publishing修改class也不会自动重启
勾选上Automatically publish when resources change
这样修改JSP后tomcat能热加载。。(这个选项对java文件无效,关了以后每次也能热加载)
相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- Linux部署Tomcat服务器
- MyEclipse Web Project转Eclipse Dynamic Web Project
- Windows Clang开发环境备忘
- tomcat在opensuse下开机自启失败的原因分析及解决方法
- 让Flex Builder 3.0与Eclipse3.4整合起来
- Eclipse配置Javascript开发环境图文教程
- 使用zend studio for eclipse不能激活代码提示功能的解决办法
- 图解Eclipse j2ee开发环境的搭建过程
- jsp项目中更改tomcat的默认index.jsp访问路径的方法
- Tomcat 多端口 多应用
- ext for eclipse插件安装方法
- tomcat 5.0 + apache 2.0 完全安装步骤详解
- Tomcat安全设置 win2003 下tomcat权限限制
- Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
- Tomcat服务器 安全设置第1/3页