Eclipse build的时候卡死,任务管理器关闭eclipse进程后,再启动web项目的时候无法启动
错误消息:
Removing obsolete files from server...
Could not clean server of obsolete files: null
java.lang.NullPointerException
或者:
Could not publish server configuration: null. java.lang.NullPointerException
原因是因为:
workspace下的servers项目的server.xml文件
和 发布之后的路径下: /workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp*/config 中的server.xml文件不一致
1. 其实workspace下servers项目中的server.xml是tomcat的config下的一份copy,有时候手动修改了servers项目下的server.xml导致文件不一致.其实可以值接把server删除,重新创建一个server就能解决问题.
2. 不过有时候因为项目需要,我们需要手动修改server.xml,所以导致发布的时候 两个文件不一致,把workspace/servers/../server.xml 文件内容copy 到 tmp*/config/server.xml 即可.
参考文章:
http://www.cnblogs.com/ziyueer/p/4143013.html
http://blog.youkuaiyun.com/zjh1n795/article/details/8432615
以下为拓展知识,和以上问题关联不大:
在/workspace/.metadata/.plugins/org.eclipse.wst.server.core下有一份servers.xml文件
里面记录的是当前workspace下所有的server:
<servers>
<server auto-publish-setting="2" auto-publish-time="1"
configuration-id="/Servers/Tomcat v7.0 Server at localhost-config" deployDir="wtpwebapps" hostname="localhost"
id="Tomcat v7.0 Server at localhost" name="Tomcat v7.0 Server at localhost" runtime-id="Apache Tomcat v7.0" server-type="org.eclipse.jst.server.tomcat.70"
server-type-id="org.eclipse.jst.server.tomcat.70" start-timeout="45" stop-timeout="15" testEnvironment="true" timestamp="1">
<list key="modules" value0="test::org.eclipse.jst.jee.server:test::jst.web::3.0"/>
</server>
</servers>
value0,就是tmp*/config/server.xml中的source
<Context docBase="D:\workspace_test\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:test"/>
publilish.xml:记录的是要发布的server,id即为servers.xml中server的id.
<publish-info>
<server id="Tomcat v7.0 Server at localhost" path="publish0.dat"/>
</publish-info>