Eclipse – 如何将Tomcat 6中的“Project Facet”更改为Tomcat 5.5?

(Eclipse 3.4,Ganymede)

我在Eclipse中有一个现有的dynamicWeb应用程序项目。 当我创build项目时,我在“configuration”下拉列表中指定了“Apache Tomcat v6的默认configuration”。

这是一个月或2下来,我现在想改变configuration为Tomcat'V5.5'。 (这将是生产服务器上的Tomcat版本。)

我尝试了以下步骤(没有成功):

  • 我在“项目Properties下select了“ Targeted Runtimes
    Tomcat v5.5选项已禁用,UI显示此消息:
    If the runtime you want to select is not displayed or is disabled you may need to uninstall one or more of the currently installed project facets.
  • 然后,我点击了Uninstall Facets...链接。
    Runtimes选项卡下,只显示Tomcat 6
    对于Dynamic Web Module ,我select了版本2.4而不是2.5
    Runtimes选项卡下,现在显示了Tomcat 5.5
    但是,用户界面现在显示此消息:
    Cannot change version of project facet Dynamic Web Module to 2.4.
    Finishbutton被禁用 – 所以我到了死胡同。

我可以使用Tomcat v5.5configuration成功创build一个新项目。 不过,出于某种原因,它不会让我降级现有的项目。

作为一个解决scheme,我创build了一个新的项目,并复制了旧项目中的源文件。 尽pipe如此,解决方法相当痛苦,而且有些笨拙。

任何人都可以解释我怎么可以'项目configuration'从'Tomcat 6'降级到'Tomcat 5'? 或者也许为什么会发生这样的事情呢?

谢谢
皮特

这是一种黑客日食,你可以陷入困境这样做,但这应该工作:

打开导航器视图,发现项目下有一个.settings文件夹展开它,然后打开文件: org.eclipse.wst.common.project.facet.core.xml你应该看到一行: <installed facet="jst.web" version="2.5"/>更改为2.4并保存。

只要确保你的项目没有使用任何特定的2.5,你应该是好的。

另外检查你的web.xml是否有正确的configuration:

 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

这可能是旧的,但我试过,发现以下在日食Galilio。

打开导航器视图,发现项目下有一个.settings文件夹展开它,然后打开文件:org.eclipse.wst.common.project.facet.core。删除这个文件的内容并右击项目并点击属性。 在popup窗口中的Project Facats中,可以单击运行时选项卡,然后将项目转换为所需的新方面。

如果你使用的是Maven,那么closureseclipse,然后input>mvn eclipse:eclipse -Dwtpversion=2.0 ,然后重新启动eclipse。

对不起,似乎我不能发表评论没有足够的代表所以…

我认为对于eclipse来说,安全降级到一个更低的标准是非常困难的,因为它不能真正知道你是否使用了新的web标准。 所以,如果它只是让你这样做,它可能会导致您的程序在旧版本上失败。

您始终可以向后兼容,但不能兼容。

您可以尝试取消选中该面,应用,更改面的值并检查。 它适用于Eclipse Helios SR1。

所以主要区别在于我使用“dynamicWeb模块”。

我希望它也适用于你。

我看到了同样的事情,然后我改变了web.xml的web-app版本值。 这样做可以解决这个问题。

如果你正在使用maven,你可以使用maven eclipse插件生成eclipse设置。

对于jst.web版本,Maven eclipse插件会考虑项目的依赖关系。 如果你定义了一个servlet API依赖关系:

 <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>servlet-api</artifactId> <version>6.0.32</version> </dependency> 

你的jst.web参数是6.0

 <faceted-project> ... <installed facet="jst.web" version="6.0"/> ... </faceted-project>