src/test/java
和src/test/resources
。另外,我更改了Java Build Path中的库以获得JavaSE-1.7。到这里都可以。当我尝试更改Projects Facet动态Web模块时,出现了问题。我在同一位置将Java更改为1.7。而且它仍然告诉我,不能将Project Facet Dynamic Web Module的版本更改为3.0。
我已经更改了所有可能影响更改的内容。
#1 楼
我更新了我的web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>Servlet 3.0 Web Application</display-name>
</web-app>
,然后只是Maven->更新项目...
评论
web.xml的更新对我不起作用。 @enkor给出的解决方案是:stackoverflow.com/a/18632054/378633
– jplandrain
2014年4月17日11:50
这是3.1 web.xml文件的有效头文件<?xml version =“ 1.0” encoding =“ UTF-8”?>
–雅各布·亚历山大·埃希勒(Jakob Alexander Eichler)
16年5月6日在16:22
没有web.xml的项目呢? :)
– Anand Rockzz
16年12月13日在6:01
版本属性更改为3.0也不适合我
–tequilacat
17 Mar 25 '17在9:01
如果以上和以下解决方案均无效,请百分百地通过此链接。
–拉基
18年3月16日在3:52
#2 楼
另一种方法是编辑项目构面配置文件本身:org.eclipse.wst.common.project.facet.core.xml
将此行中的动态Web模块版本更改为3.0-
<installed facet="jst.web" version="2.5"/>
然后:
右键单击项目(在“项目资源管理器”面板中)。
选择Maven»更新项目(或按Alt + F5)
Eclipse项目中
.settings
目录中的文件。评论
谢谢。实际上,我认为我们应该像上面一样做其他事情,在web.xml中更改Web模块的版本,否则,“ Deployment Descriptor”的版本将不会更改为3.0。那是Maven插件中的错误吗?
– EdgarZeng
2013年9月8日上午11:39
当您的项目中没有web.xml时,这似乎是解决此问题的唯一方法。
–肖恩·舍伍德(Shawn Sherwood)
13-10-14在16:32
我已经在web.xml中安装了3.0,并且STS仍然无法更新,而mvn更新也无济于事。但是,此方法有效。
– MiB
2014年3月18日在16:52
这有帮助,实际上转到-> org.eclipse.wst.common.project.facet.core.xml->删除所有条目-> maven更新项目。
–虚拟
15年8月17日在11:59
您可以在application / project .settings文件夹中找到org.eclipse.wst.common.project.facet.core.xml文件。
–鲁西·沙(Rushi Shah)
16年8月2日在18:26
#3 楼
我想我和你有同样的问题。我的web.xml的版本为2.5,而该项目的(右键单击Project-> Properties-> Project Facets->)Dynamic Web Module 2.3。尽管我尝试将版本从2.3更改为到2.5 ECLIPSE不允许。
解决方案:我删除了“动态Web模块”标题下的复选标记,保存并获得了更新项目。自动重新唤醒将输入具有正确版本的框。我使用Eclipse Kepler。
p.s .:看看下面乔纳森的评论,非常有用。
评论
太好了!它解决了我的问题,但是您能告诉我为什么它最初不允许设置动态模块。
– Suresh
2014年6月6日15:36
@Suresh,我认为为什么不允许更改版本的问题是因为它已锁定。如果右键单击“动态Web模块”构面,它将显示“解锁”选项。解除锁定,取消选中DWM构面,重新应用构面并进行项目Maven更新后,错误消失了。
–乔纳森
2014年4月24日在6:38
+1。没有这个极其重要的观点,这里的其他答案是徒劳的。只有我认为,乔纳森(Jonathan)的评论不应包含在答案中。
–绞肉
2015年10月5日在20:29
+1 @Jonathan您的提示完成了工作。您必须将其发布为答案,并且还应该将其发布给Eclipse!
– Aksappy
2015年12月16日下午5:34
在我的情况下,这可行,为什么在Web模块pom中为Dnamic Web模块设置了另一个版本,所以这与项目配置冲突
– ocrampico
18年5月5日在7:07
#4 楼
单击项目文件夹。
转到窗口>显示视图>导航器
转到导航器并展开.settings文件夹
打开
org.eclipse.wst.common.project.facet.core.xml
文件<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
像这样更改版本
<installed facet="jst.web" version="3.1"/>
保存
仅更新项目。右键单击“项目”文件夹> Maven>更新项目>选择项目,然后单击“确定”。
这对我来说就行了。
#5 楼
我遇到了同样的问题,甚至尝试删除该项目并再次添加它。诀窍是删除.settings
目录。评论
我也必须这样做。我正在使用具有基于Java的配置的Spring Web项目,因此对我而言无法更新web.xml。
–bcody
2014年4月6日13:12
为什么删除.setting后它能正常工作,请问您愿意吗?
–阿比吉特·查克拉(Abhijit Chakra)
16年5月26日在10:34
该.settings目录包含许多内容,并且其中一些内容可能会随着时间而改变。我不知道是什么部分影响了此行为,但这就像是重置。没有其他答案对我有用,但是这个答案。在这种情况下,我似乎并不是唯一的一个。
– Adrian Ber
16年5月27日在9:19
为我工作,我遇到了以下错误:“无法将项目face EAR的版本更改为1.3。”
–乔凡尼·P。
16-11-23在10:14
为我工作!我遇到了错误:“无法将项目构面动态Web模块的版本更改为3.0”
– Anup Ghosh
18年1月9日在22:30
#6 楼
删除.settings
.classpatch
.projejct
target
,然后再次导入maven项目。
评论
如何再次导入Maven项目。我是新来的。
–丹尼尔·布鲁尔(Daniel Brower)
19年4月4日在17:56
#7 楼
适用于我的方法:将Java更改为1.8(或1.7)
在POM中-您必须将编译器插件设置为version
<build>
部分中的1.8(或1.7): <build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
确保更改Java Build显示1.8。如果不是,请单击“编辑”,然后选择它应该是什么。 br />
确保在Project Facets中将Java设置为1.8
在这一阶段,我仍然无法更改Dynamic Web Module;
而不是更改它:
a)取消选中动态Web模块
b)应用
c)检查再来一次。应该设置新版本3.0。**
应用并再次检查后:
希望这会有所帮助。
#8 楼
右键单击项目→属性;在Project Facets中,取消选择“动态Web模块”(版本应为3.1),并取消选择“ JavaServer Faces”(版本为2.2)。更改此:
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
对此:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
,然后删除
param-name
之类的前缀。最后,Maven->更新项目。
#9 楼
您请打开“导航器”视图,并执行以下步骤(“窗口”>“显示视图”>“其他”>“常规”),然后发现项目下有一个.settings文件夹,将其展开,然后打开文件“ org.eclipse.wst.common.project.facet.core.xml”,进行以下更改并保存文件。
将此行中的动态Web模块版本更改为2.5-
将此行中的Java版本更改为1.5或更高版本-。
评论
您忘了告诉您应该在“显示视图”对话框的“常规”文件夹下选择哪种视图。是“导航器”视图吗?
– Roberto Linares
2014-02-18 23:25
#10 楼
从项目结构中打开web.xmlhttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd“
version =” 3.0“>
Servlet 3.0 Web应用程序
并更新web.xml文件
,例如,更改版本=“ 2.5”
也更改org.eclipse.wst.common。项目.settings文件中的project.facet.core.xml文件
遵循步骤
1.窗口>显示视图>其他>常规>导航器
那里是项目目录下的.settings文件夹。
将此行中的动态Web模块版本更改为2.5
4。将此行中的Java版本更改为1.5或更高版本
现在刷新项目并设置为在服务器上运行
请关注博客以获取解决方案
http://scrapillars.blogspot.in/2014/02/how-to-change -project-facet-in-eclipse.html
该解决方案带有图像插图
评论
虽然此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
– Micha
14年2月24日在6:54
我已经对pom.xml文件进行了更改,如crunchify.com/…所示。但是,这还不够。我还必须遵循建议,打开.settings文件夹并编辑文件or.eclipse.wst.common.project.facet.core.xml文件。
– 21点
2015年1月20日在9:55
#11 楼
最好,最简单的步骤为我解决了此问题,是1)属性->项目构面->取消选中/取消选中动态Web模块的复选框->应用
2)现在更改为所需的版本应用
3)选中“动态Web模块”复选框。.
-现在完成了-
评论
运作良好,但这会带来什么后果?
– sg28
16-11-14在1:45
#12 楼
他们是解决此问题的另一种方法(检查出希望对您有帮助的问题)。问题
无法更改项目构面动态Web模块2.3的版本到3.0
解决方案
转到项目位置(例如-D:/ maven / todo)
转到.setting文件夹
/>检查该文件:org.eclipse.wst.common.project.facet.core.xml
打开文件,将“ jst.web”属性从2.3更改为3.0,然后保存
右键单击在项目上刷新项目并更新Maven
完成!!! .....
#13 楼
之所以使用web.xml技巧,是因为您现在要明确告诉WTP您正在使用该特定的servlet版本,而不管容器支持什么。就我而言,我在Maven项目中使用注释配置,但没有web.xml文件。事实证明,在没有web.xml的情况下,WTP会查看您的Maven依赖项以确定要使用的Servlet版本。就我而言,我已经定义了以下内容:将其更改为6.0可以解决此问题,现在它使用的是Servlet 3.0而不是3.1,这是JavaEE的默认设置7.由于必须从Tomcat 8转到Tomcat 7,因此Tomcat 7仅支持JavaEE 6 Web概要文件。现在事情进展顺利。
#14 楼
我遇到了同样的问题,仅编辑web.xml以及更改.settings文件夹中的文件都无济于事。我的解决方案是通过编辑pom.xml直接指向maven编译器插件以使用所需的Java版本:更改属性->项目构面->动态Web模块版本中的servlet版本,或者如前所述,通过在项目的.settings文件夹中手动编辑org.eclipse.wst.common.project.facet.core.xml进行更改。#15 楼
就我而言,dtd引用了web.xml。在像悉尼发布的那样将其更改为xsd参考后,它开始起作用。#16 楼
我遇到了同样的问题,删除.settings文件夹可以解决此问题#17 楼
对于无法使我在Eclipse(Mars)中更改项目构面Dynamic Web Module版本的问题,我的解决方案是:禁用Maven Nature
确保web.xml命名空间指向正确的版本
重新启用Maven Nature
Maven»更新项目(或按Alt + F5)
#18 楼
如果悉尼的回答仍然不能解决问题,请尝试以下操作。按照悉尼的回答,转到“属性”>“项目构面”,取消选择“动态Web模块”,然后更改版本以匹配您的web.config,然后再次选择。应用>保存
然后进行Maven更新。
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Web_App_1" version="3.1">
<display-name>JavaServerFaces</display-name>
<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>jsfs/hello.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>jsfs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
#19 楼
我在这里尝试了许多答案,但没有一个对我有用。然后,我在这里找到有关我的问题的文章。我也想在这里共享它。
下面是简要介绍的步骤。
设置编译器合规性级别。 />从首选项更新已安装的JRE
在pom.xml中添加配置以使用Java 1.7,最后从Maven更新项目。
#20 楼
对于Maven Eclipse Web项目,更改动态Web模块版本需要检查三个位置。如果使用eclipse,并且在检查以下内容之后:1)web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
2)maven:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope> ## ensure you have tomcat 7 not other version
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source> ## at least 6
<target>1.7</target>
</configuration>
</plugin>
3)Eclipse构建路径和编译器版本为1.7
然后您可以:
取消选中动态Web模块,然后重新对其进行检查。
我认为这是因为eclipse文件的.settings有所损坏。关于第二个提示tomcat,哪个版本是一个很好的注释。
#21 楼
当我尝试将一般的Java项目转换为Maven项目时,出现此错误。我所做的是确定项目所需的Java编译器版本。对于我的项目,最低Java版本是
1.8
。通过将版本降低到低于
1.8
,我的IDE将开始抱怨它无法识别大量导入的库,因此,我确定了我的最低Java版本现在,请确保Java编译器版本使用与Project Facets中设置的Java版本相同的版本。 1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version
更改后,应解决错误。如果错误仍然存在,请右键单击项目-> Maven->更新项目
#22 楼
进行maven更新或重新导入项目无济于事。 @悉尼的答案是正确的;此外,我还必须按照JavaServer Faces 2.2中要求Dynamic Web Module 2.5或更高版本的方式在不同的工作空间中重新创建项目。#23 楼
打开org.eclipse.wst.common.project.facet.core.xml文件,并将jst.web版本更改为3.0。还将web.xml更新到版本3.0。保存并更新项目。希望这可以帮助。我正在使用Eclipse Juno#24 楼
这是pagurix答案的变体,但使用Eclipse Mars。将您的web.xml文件更改为web.bak
忽略错误,接下来我们将重新生成它。
进入项目属性->项目构面,然后将Dynamic Web Module版本设置为所需。 Eclipse现在允许您保存。
现在右键单击该项目。选择Java EE工具->生成部署描述符存根。
这将创建具有所需版本的新web.xml。
打开新的web.xml,并跨XML标头和完整的Web应用程序开始标记复制到原始web.bak,删除新的web.xml,然后将web.bak重命名为Web。 xml。
完成。
#25 楼
我的名字在Web Module 3.0
中是web.xml
,但在properties>Dynamic Web Module
中是3.1
。我将
web.xml
更改为: :right click on project>Maven>Update Project...
#26 楼
此问题的版本右键单击项目->属性->项目构面->右键单击动态Web模块->解锁->取消选中->选择2.5版本->应用->更新Maven#27 楼
我通过使用正确的版本,xsd位置修改web.xml并使用正确的版本修改org.eclipse.wst.common.project.facet.core.xml并进行maven更新来解决了此问题。#28 楼
更新maven对我有用选择项目,然后按ALT + F5,然后选择项目,单击确定
#29 楼
我有相同的症状,但治愈方法不同。我试图将我的JSF 2.2.4 / Spring 3.0 Webapp升级到JSF 2.3,以便在那里享受新的JSF Websocket挂钩,而Eclipse(实际上是STS)将无法配合使用。在Eclipse的Project Facets中,直到我按照先前答案中的指示直接编辑org.eclipse.wst.common.project.facet.core.xml文件之前,JSF 2.3才可用-最高为2.2。 br />这是我跳过的篮球。我不知道所有这些都是必需的,因为我从根本上不了解所有这些配置。在Eclipse中,我经常收到一个可怕的警告:“当一个或多个安装的构面的实现不可用时,修改多面项目可能会导致项目损坏。确定要继续吗?”这促使我进行更频繁的提交,但没有发生损坏。
在POM,Eclipse编译器和Eclipse Project Facets中将JDK从1.7升级到1.8。
更新以下Maven依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
...到:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
。 ..和...
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>
... to:
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
</dependency>
我必须更新我的web.xml名称空间声明从:项目构面->动态Web模块从2.5到3.0。我试过3.1,但出现错误。
在此过程中,我经常在帖子标题中看到错误:“无法将Project Facet动态Web模块的版本更改为3.0”,Eclipse拒绝编译该项目或在Project Facets中提供JSF 2.3。当我按照指示编辑org.eclipse.wst.common.project.facet.core.xml文件时,错误消失了,Eclipse在Project Facets中提供了JSF 2.3,并且在Tomcat 9.0.8上编译并运行了该项目。但是,Project Facets仍然警告“找不到项目facet jst.jsf 2.3版的实现。功能将受到限制。”我怀疑这仅仅是意味着自动完成功能和其他Eclipse便利性将不可用,因为它找不到在我的POM中声明的JSF 2.3实现。
希望这对某人有帮助。谷歌搜索仅产生了阿里·巴萨姆(Ali Bassam)和间接帮助了BalusC的这篇文章。
评论
好。对此我感到抱歉。创建新Maven项目时,原型为maven-archetype-webapp,创建项目后,Project Facets中的Dynamic Web Module为2.3。我想将Dynamic Web Module的版本更改为3.0,并且得到了“无法将Project Facet Dynamic Web Module的版本更改为3.0”这对我有用:stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
在Eclipse Kepler中,当我右键单击“动态Web模块”构面时,它将显示“解锁”选项。解锁后,我可以更改构面版本。仅供参考。
这是蚀的错误吗?
无法将项目构面动态Web模块的版本更改为2.5的可能副本