无法将项目方面动态Web模块的版本更改为2.5

joe*_*elt 34 java eclipse web-applications maven

我从其他公司继承了一个Java Web应用程序.我正在尝试将其加载到Eclipse中(通过Import Maven项目),并收到错误消息"无法将项目方面的动态Web模块更改为2.5".

我一直在探索一下,我发现的一件事是web.xml文件的开头

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
Run Code Online (Sandbox Code Playgroud)

并且pom.xml指定了依赖项

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

但是.settings文件夹包含一个带有此文件的文件

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="java" version="1.6"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
Run Code Online (Sandbox Code Playgroud)

我怀疑这里指定的3.0与其他地方指定的2.5冲突.可能是这种情况吗?这种设置组合有什么办法不会导致错误?(较早版本的Eclipse,例如?)

The*_*boy 101

精简版

试试这个:

  • 在项目构面中取消选择动态Web模块. 右键单击项目 - >首选项 - >项目构面
  • 然后再次运行Maven - > Update Project.

长版

在学习一些eclipse动态web/spring东西的时候,我已经多次遇到过这个问题,而其他任何一个解决方案都无法可靠地修复我的问题或帮助我理解导致问题的原因.我想我开始了.

因此,当您运行Maven - > Update Project时,m2e(我假设)将动态Web模块添加到Project Facets.添加是关键词.所以当我进入并从[...] http://java.sun.com/xml/ns/javaee/web-app_2_3.xsd"version ="2.3"> 更新web.xml 到[...] http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version ="2.5">

我收到错误"无法将项目方面动态Web模块的版本更改为2.5."

当我尝试3.0时,3.0也是如此.

似乎m2e能够将其添加到您的项目中,但是错误说它一旦设置就无法更改它.因此,只需在项目构面页面中取消选择它即可.单击确定以保存首选项并再次运行Maven Update.

Eclipse Project Facets动态Web模块

不应该需要包括在你的pom.xml的javax.servlet,如果你有一台服务器(如Tomcat)方面加入.

Servlet-Api包含在库中


Jac*_*Dev 13

请参阅无法将项目构面动态Web模块的版本更改为3.0?

关闭项目,直接更新位于项目的.settings文件夹中的文件'org.eclipse.wst.common.project.facet.core.xml'.

  • 是的,它可以工作,但您不需要关闭项目.只需在Eclipse中按Ctrl + Shift + R,打开`org.eclipse.wst.common.project.facet.core.xml`并更新行`<installed facet ="jst.web"version ="2.3"/>`新版本. (4认同)

Har*_*ann 6

我的猜测是原始作者在初始导入后手动更改了Eclipse项目的Project Facets,并且从未运行Maven | 之后更新.

无论如何,对于Maven项目,最好不要将任何Eclipse元数据(即.classpath, .project, .settings/)提交给SCM并让m2e在导入时生成它们.

所以我建议复制你的项目结构,从副本中删除所有Eclipse元数据,然后通过m2e导入.

如果导入时仍然存在任何错误,那么至少您可能会得到原始作者调整默认值的提示,因此您将知道从哪里开始清理.