(日食 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top