dynamicWeb模块3.0 – 3.1

我有一个基于代码的configuration的Spring 3.2.4 Web应用程序。 当我使用Maven / pom.xml首先构build应用程序时,出现web.xml缺失的错误。 首先我试图创build一个空的web.xml。 这是项目方面改变的时刻(我不知道为什么)。 它从dynamicWeb模块3.0切换到3.1,这是不可逆转的。 我怎样才能改变到dynamic网页模块3.0?

在这里输入图像说明

另外我不能删除JAX-RS。 尝试这个结果是:

Failed while uninstalling JAX-RS (REST Web Services) 1.0. org.eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.eclipse.jst.j2ee.webapplication.WebApp 

后来我发现我可以通过在pom.xml中插入相应的插件来避免Maven编译错误:

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> 

我在日食方面遇到了类似的麻烦,唯一能解决的方法就是为了我

  • 卸下Web模块
  • 应用
  • 更改模块版本
  • 添加模块
  • configuration(对话框底部的进一步configuration可用链接)
  • 应用

只要确保在应用之前configuration了Web模块,默认情况下它将在/ WebContent /中查找您的Web文件,这不是Maven项目结构应该是的。

编辑

如果没有其他帮助,这是第二种方法

  • 退出eclipse,转到您的项目在文件系统,然后到.settings文件夹。
  • 打开org.eclipse.wst.common.project.facet.core.xml进行备份 ,并删除Web模块条目。
  • 您也可以在那里修改Web模块版本,但是不能保证。

如果您想使用版本3.1,则需要使用以下模式:

  • http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

请注意,3.0和3.1是不同的:在3.1中没有提及Sun,所以仅仅将3_0.xsd更改为3_1.xsd将不起作用。

这是它应该是这样的:

 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> </web-app> 

此外,请确保您的pom.xml的最新版本。 那是,

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> ... </configuration> </plugin> 

 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 

最后,你应该用Java 7或8进行编译:

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> 

我有同样的问题,并通过编辑org.eclipse.wst.common.project.facet.core.xml来解决这个问题。

在这个文件中,我能够改变下面一行

 <installed facet="jst.web" version="3.1"/> 

回到

 <installed facet="jst.web" version="3.0"/> 

这似乎解决了我的问题。

我在Win7,Tomcat7上运行maven项目,在Eclipse Mars上安装maven-pom。 在一个不运行的服务器上,我只需要在这个屏幕上从3.1更改为3.0。 在这里输入图像说明

对我来说,禁用Dynamic Web Module非常重要! 然后更改版本,然后再次启用dynamicWeb模块。

打开Eclipse项目属性,在Project Facets中取消select“Dynamic Web Module”,…点击OK Maven – > Update project

在一个特定的情况下,这个问题是由于maven-archetype-webapp是为了一个dynamicwebapp而发布的,面向ver.2.5(参见生成的web.xml和相关的xsd),它与eclipse有关。 当您尝试将项目构面更改为dynamicWeb应用程序> 2.5时,src文件夹结构将在语法上发生更改(2.5与3.1不同),但不是保留。

这就是为什么如果您应用于更改,您将面临空指针exception。

要解决它,你必须从项目构面configuration默认configuration。 应用更改,然后进入Java Build Path,必须至less删除/ src文件夹并创build/ src / main / java文件夹(也需要/ src / main / resources和/ src / test / java符合标准)重新转换成您所需的configuration(3.0,3.1),然后进行应用。

我打开了项目org.eclipse.wst.common.project.facet.core.xml,并首先更改,然后删除与Web模块标记行。 每次清理项目并在Tomcat上启动,但仍然没有运行。 返回的线(如),并清理项目。 在Eclipse中打开Tomcat设置并手动将项目添加到Tomcat启动(右键单击+添加和删除)。 点击项目,并select在服务器上运行….一切都很好。

1)转到您的项目,find“.settings”目录这一个
2)打开文件xml名为:
org.eclipse.wst.common.project.facet.core.xml的
3)

 <?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.5"/> <installed facet="jst.web" version="2.3"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project> 

将jst.web版本更改为3.0,将java版本更改为1.7或1.8(基于当前使用的jdk版本)

4)在WEB-INF目录下改变你的web.xml文件,请参考这篇文章:
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
5)转到pom.xml文件并粘贴这些行:

 <build> <finalName>YOUR_PROJECT_NAME</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> THIS IS YOUR USING JDK's VERSION <target>1.8</target> SAME AS ABOVE </configuration> </plugin> </plugins> </build>