Eclipse 未发布的WTP部署失败

Eclipse 未发布的WTP部署失败,eclipse,tomcat,eclipse-wtp,Eclipse,Tomcat,Eclipse Wtp,我目前使用的是Tomcat7.0.21、JDK1.6.29和WTP3.3.1(在EclipseIndigo上运行)。我不确定运行的是哪个版本的M2E。当我在Eclipse之外安装并运行一个mvn Tomcat,或者通过WTP部署到服务器上,并且未选中“不发布服务模块”时,我的项目可以很好地构建和部署 但是,当我通过WTP在未选中“无发布”框的情况下启动服务器时,Tomcat将无法成功启动,失败原因如下: Dec 29, 2011 4:09:39 PM org.apache.catalina.st

我目前使用的是Tomcat7.0.21、JDK1.6.29和WTP3.3.1(在EclipseIndigo上运行)。我不确定运行的是哪个版本的M2E。当我在Eclipse之外安装并运行一个mvn Tomcat,或者通过WTP部署到服务器上,并且未选中“不发布服务模块”时,我的项目可以很好地构建和部署

但是,当我通过WTP在未选中“无发布”框的情况下启动服务器时,Tomcat将无法成功启动,失败原因如下:

Dec 29, 2011 4:09:39 PM org.apache.catalina.startup.ContextConfig processAnnotationsJndi SEVERE: Unable to process JNDI URL [jndi:/localhost/plutom-ws/WEB-INF/classes] for annotations java.io.FileNotFoundException: jndi:/localhost/plutom-ws/WEB-INF/classes at org.apache.naming.resources.DirContextURLConnection.list(DirContextURLConnection.java:463) at org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1901) at org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1905) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1828) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1295) 2011年12月29日下午4:09:39 org.apache.catalina.startup.ContextConfig processAnnotationsJndi 严重:无法处理注释的JNDI URL[JNDI:/localhost/plutom ws/WEB-INF/classes] java.io.FileNotFoundException:jndi:/localhost/plutom ws/WEB-INF/classes 在 org.apache.naming.resources.dircontexturconnection.list(dircontexturconnection.java:463) 位于org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1901) 位于org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:1905) 位于org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1828) 位于org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1295)
如果我手动创建classes目录,它会抱怨classes/com,似乎classloader和某个文件路径解析之间存在冲突?

这是Eclipse WTP和Tomcat 7之间的一个已知错误。以下是相关的Bugzilla条目:


显然,修复方法是已知的,只是还没有应用。我猜这不是一个常见的用例,因为否则会有更多的人要求修复它。太糟糕了,这是一个非常有用的功能。

为什么要使用“不发布”?我的意思是,这不是将导致类发布到服务器的原因吗?它只是意味着它将从/target目录获取我的类文件和部署,而不是将实际的war复制到某个地方。复制战争意味着我所做的任何更改都需要停止并重新启动。不发布意味着我可以处理修改html/js/某些类文件而无需重新启动。