我正在使用maven在Eclipse中创建一个动态web应用程序。我添加了一些文件夹,如src/test/java和src/test/resources。我还更改了Java Build Path中的库,以获得JavaSE-1.7。到这里都没问题。
当我试图改变项目Facet动态Web模块时,出了问题。在同一个地方,我将Java更改为1.7。它仍然告诉我,不能将项目facet动态Web模块的版本更改为3.0。
我已经改变了所有我认为会影响改变的东西。
我正在使用maven在Eclipse中创建一个动态web应用程序。我添加了一些文件夹,如src/test/java和src/test/resources。我还更改了Java Build Path中的库,以获得JavaSE-1.7。到这里都没问题。
当我试图改变项目Facet动态Web模块时,出了问题。在同一个地方,我将Java更改为1.7。它仍然告诉我,不能将项目facet动态Web模块的版本更改为3.0。
我已经改变了所有我认为会影响改变的东西。
当前回答
从项目结构中打开web.xml http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” version = " 3.0 " > Servlet 3.0 Web应用程序
并更新web.xml文件 例如change version = "2.5"
还要从project .settings文件更改org.eclipse.wst.common.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
解决方案是由图像插图产生的
其他回答
请打开Navigator视图并执行以下步骤
(Window > Show View > Other > General),然后发现在你的项目下有一个。settings文件夹,展开它,然后打开文件“org.eclipse.wst.common.project.facet.core.xml”,做下面的修改并保存文件。 将这一行中的动态web模块版本更改为2.5 - 将这一行中的Java版本更改为1.5或更高版本。
我也遇到了同样的问题,编辑web.xml以及更改.settings文件夹中的文件并没有帮助。我的解决方案是直接指向maven编译器插件,通过编辑pom.xml使用所需的java版本:
<build>
...
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
现在运行Maven->更新项目,然后您可以在属性->项目facet ->动态Web模块版本中更改servlet版本,或者如前面所写的,通过手动编辑项目的。settings文件夹中的org.eclipse.wst.common.project.facet.core.xml。
对我有用的是:
将Java更改为1.8(或1.7)
在你的POM中-你必须在<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。如果没有,单击编辑并选择它应该是什么。
修改web.xml,以便在版本和链接中引用3.0
确保在Project Facets中将Java设置为1.8
在这个阶段,我仍然不能改变动态Web模块;
而不是改变它:
a)取消勾选动态Web模块
b)应用
C)再检查一遍。新版本3.0应该设置。**
应用并再次检查后:
希望这能有所帮助。
我有同样的问题,我甚至试图删除项目,并再次添加它。诀窍是删除.settings目录。
我有同样的症状,但治疗方法不同。我试图将我的JSF 2.2.4/Spring 3.0 webapp升级到JSF 2.3,以便享受新的JSF websocket钩子,Eclipse(实际上是STS)不会合作。在Eclipse的Project Facets中,JSF 2.3从未可用,直到我按照前面的回答直接编辑了org.eclipse.wst.common.project.facet.core.xml文件——最高的是2.2。
这是我经历过的难关。我不知道这些都是必要的因为我根本不理解这些构型。
在Eclipse中,我经常收到一个可怕的警告,“当一个或多个已安装的facet的实现不可用时,修改一个面项目可能会导致项目损坏。”你确定要继续吗?”这促使我进行更频繁的提交,但没有发生损坏。
在POM、Eclipse编译器和Eclipse Project Facets中将JDK从1.7升级到1.8。 更新以下Maven依赖项: <依赖> < groupId > javax.servlet < / groupId > < artifactId > servlet api < / artifactId > <版本> 2.4版本> < / < >范围提供了> < /范围 < / >的依赖 ... : <依赖> < groupId > javax.servlet < / groupId > < artifactId > javax.servlet-api < / artifactId > <版本> 4.0.0 > < /版本 < >范围提供了> < /范围 < / >的依赖
... 和…
<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>
... :
<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-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">
... :
<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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
我不得不更新项目facet ->动态Web模块从2.5到3.0。我尝试了3.1,但出现了错误。
In this process I frequently got the error in the title of this post, "Cannot change version of project facet Dynamic Web Module to 3.0" and Eclipse refused to compile the project or offer JSF 2.3 in the Project Facets. When I edited the org.eclipse.wst.common.project.facet.core.xml file as directed the errors disappeared, Eclipse offered JSF 2.3 in Project Facets, and the project compiled and ran fine on Tomcat 9.0.8. However, Project Facets still warned "Implementation of version 2.3 of project facet jst.jsf could not be found. Functionality will be limited." I suspect this simply means that autocomplete and other Eclipse conveniences will not be available because it cannot find the JSF 2.3 implementation declared in my POM.
希望这能帮助到一些人。谷歌搜索只找到了Ali Bassam和BalusC间接提供的这篇文章。