2008-09-16 68 views
56

(Eclipse 3.4,Ganymede)Eclipse - 如何将Tomcat 6中的'Project Facet'更改为Tomcat 5.5?

我在Eclipse中有一个现有的Dynamic Web Application项目。当我创建项目时,我在'Configuration'下拉列表中指定了'Apache Tomcat v6的默认配置'。

这是一个月或2下线,现在我想将配置更改为Tomcat'v5.5'。 (这将是Tomcat的生产服务器上的版本。)

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

  • 我选择Targeted Runtimes项目下Properties
    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,我选择版本2.4代替2.5
    Runtimes选项卡下,现在显示Tomcat 5.5
    然而,现在的用户界面显示这样的信息:
    Cannot change version of project facet Dynamic Web Module to 2.4.
    Finish按钮被禁用 - 让我达到了一个死胡同。

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

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

任何人都可以解释我如何'降级'项目配置从'Tomcat 6'到'Tomcat 5'?或者也许揭示了为什么发生这种情况?

感谢
皮特

回答

87

这是一种黑客日食,你可以得到麻烦这样做,但应该工作:

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

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

另外,请检查你的web.xml文件具有正确的配置:

<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"> 
+1

感谢。事实上,我在发布这个问题之前尝试了你的黑客攻击,并取得了部分成功。当我试图从Eclipse内运行项目(在Tomcat 5.5下)时,我遇到了一些异常。所以我启动了Eclipse来复制异常堆栈......并且它工作正常!任何想法为什么需要黑客? – user13360 2008-09-16 21:20:23

+0

真棒..这个答案帮助我解决了长期存在的问题。 – SRy 2012-12-17 19:37:54

+0

+1!这个破解真的有用:-) – Badal 2013-04-10 06:19:57

0

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

我认为eclipse安全降级到一个较低的标准太困难了,因为它不能真正知道你是否使用过新的web标准中的某些东西。所以如果它只是让你这样做,它可能会导致你的程序在旧版本上失败。

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

7

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

打开导航视图,发现项目下有一个.settings文件夹展开它,然后打开文件:org.eclipse.wst.common.project.facet.core.Delete这个文件的内容和右键点击该项目并点击属性。在弹出窗口中转到Project Facats,在那里您可以单击运行时选项卡并将您的项目转换为您想要的新方面。

0

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

所以主要区别在于我用'Dynamic Web Module'来做。

我希望它也适用于你。

5

如果您使用的是Maven,那么关闭eclipse,然后输入>mvn eclipse:eclipse -Dwtpversion=2.0,然后重新启动eclipse。

0

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

-1

如果您使用的是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>