Eclipse - 如何将“Project Facet”从 Tomcat 6 更改为 Tomcat 5.5?
题
(日食 3.4,木卫三)
我在 Eclipse 中有一个现有的动态 Web 应用程序项目。创建项目时,我在“配置”下拉列表下指定了“Apache Tomcat v6 的默认配置”。
一两个月后,我现在想将配置更改为 Tomcat 'v5.5'。(这将是生产服务器上 Tomcat 的版本。)
我已尝试以下步骤(没有成功):
- 我选择了
Targeted Runtimes
项目下Properties
这Tomcat v5.5
选项被禁用,用户界面显示以下消息:
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
现在显示。
但是,UI 现在显示此消息:
Cannot change version of project facet Dynamic Web Module to 2.4.
这Finish
按钮被禁用 - 所以我进入了死胡同。
我可以使用 Tomcat v5.5 配置成功创建一个新项目。但出于某种原因,它不会让我降级现有项目。
作为解决方法,我创建了一个新项目并从旧项目复制了源文件。尽管如此,解决方法相当痛苦,而且有些笨拙。
谁能解释一下如何将项目配置从“Tomcat 6”“降级”到“Tomcat 5”?或者也许可以解释为什么会发生这种情况?
谢谢
皮特
解决方案
这是一种 hacking eclipse,这样做可能会遇到麻烦,但这应该可行:
打开导航器视图,发现您的项目下有一个 .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">
其他提示
这可能很旧,但我尝试并在 eclipse Galilio 中发现了以下内容。
打开导航器视图,发现您的项目下有一个 .settings 文件夹,将其展开,然后打开文件:org.eclipse.wst.common.project.facet.core.删除该文件的内容并右键单击该项目并单击属性。转到弹出窗口中的 Project Facats,您可以单击运行时选项卡并将项目转换为您想要的新方面。
如果您使用的是 Maven,则关闭 eclipse,然后输入 >mvn eclipse:eclipse -Dwtpversion=2.0
, ,然后重新启动 Eclipse。
抱歉,如果没有足够的代表,我似乎无法发表评论,所以......
我认为 Eclipse 很难安全地降级到较低的标准,因为它无法真正知道您是否使用了较新的 Web 标准中的某些内容。因此,如果它只是允许您这样做,则可能会导致您的程序在旧版本上失败。
您始终可以向后兼容,但不能向前兼容。
您可以尝试取消选中构面,应用,更改构面的值并检查。它在 Eclipse Helios SR1 中适用于我。
所以主要的区别是我使用“动态 Web 模块”来实现。
我希望它也适合你。
我看到了同样的事情,然后我更改了网络应用程序版本值 web.xml
. 。这样做可以为您解决这个问题。
如果您使用 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>