无法将Project Facet动态Web模块的版本更改为3.0?

2020/10/26 01:24 · java ·  · 0评论

我正在使用Maven在Eclipse中创建动态Web应用程序。我添加了一些文件夹,例如src/test/javasrc/test/resources另外,我更改了Java Build Path中的库以获得JavaSE-1.7。到这里都可以。

当我尝试更改Projects Facet动态Web模块时,出现了问题。我在同一位置将Java更改为1.7。而且它仍然告诉我,无法将Project Facet动态Web模块的版本更改为3.0。

我已经改变了所有会影响我认为的改变的事物。

我更新了我的 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->更新项目...

另一种方法是编辑项目构型配置文件本身: org.eclipse.wst.common.project.facet.core.xml

将此行中的动态Web模块版本更改为3.0- <installed facet="jst.web" version="2.5"/>

接着:

  1. 右键单击项目(在“项目资源管理器”面板中)。
  2. 选择Maven»更新项目(或按Alt+F5

您将.settings在Eclipse项目目录中找到此文件

我想我和你有同样的问题。我的web.xml的版本为2.5,而该项目的动态Web模块2.3为(右键单击Project-> Properties-> Project Facets->)。

尽管我尝试将版本从2.3更改为2.5,但ECLIPSE不允许。解决方案:我删除了“动态Web模块”标题下的复选标记,保存并拥有“更新项目”。自动重新唤醒将输入具有正确版本的框。我使用Eclipse Kepler。

ps:看看下面乔纳森评论,非常有用。

  1. 单击您的项目文件夹。
  2. 转到窗口>显示视图>导航器
  3. 转到导航器并展开.settings文件夹
  4. 开启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>
    
  5. 像这样更改版本 <installed facet="jst.web" version="3.1"/>

  6. 只需更新您的项目。右键单击项目文件夹> Maven>更新项目>选择项目,然后单击“确定”

只是这对我有用。

我遇到了同样的问题,甚至尝试删除该项目并再次添加它。诀窍是删除.settings目录。

删除

.settings 
.classpatch 
.projejct 
target

并再次导入Maven项目。

对我有用的是:

  1. 将Java更改为1.8(或1.7)

在您的POM中-您必须在以下部分中将编译器插件设置为版本1.8(或1.7)<build>

  <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。如果不是,请单击“编辑”,然后选择应该的名称。

在此处输入图片说明

  1. 修改web.xml,以便在版本和链接中引用3.0

在此处输入图片说明

  1. 确保在Project Facets中将Java设置为1.8

在此处输入图片说明

  1. 在这一阶段,我仍然无法更改Dynamic Web Module;

而不是更改它:

a)取消选中动态Web模块

b)申请

c)再次检查。应该设置新版本3.0。**

在此处输入图片说明

申请并再次检查后:

在此处输入图片说明

希望这可以帮助。

右键单击项目属性Project Facets中,取消选择Dynamic Web Module(版本应为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">

然后删除前缀beforeparam-name等。

最后,Maven- >更新项目

您请打开“导航器”视图,然后执行以下步骤

  1. (窗口>显示视图>其他>常规),然后在您的项目下找到一个.settings文件夹,将其展开,然后打开文件“ org.eclipse.wst.common.project.facet.core.xml”,下面的更改并保存文件。
  2. 将此行中的动态Web模块版本更改为2.5-
  3. 将此行中的Java版本更改为1.5或更高版本。

从项目结构中打开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”

另外,从项目.settings文件中更改org.eclipse.wst.common.project.facet.core.xml文件。请按照以下步骤操作:1.窗口>显示视图>其他>常规>导航器

  1. 项目目录下有一个.settings文件夹

  2. 将此行中的动态Web模块版本更改为2.5 4.将此行中的Java版本更改为1.5或更高版本

现在刷新您的项目,并设置为在您的服务器上运行。

请关注博客以获取解决方案
http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

该解决方案带有图像插图

最好,最简单的步骤为我解决了此问题:1)属性->项目构面->取消选择/取消选中动态Web模块的复选框->应用2)现在更改为所需版本应用3)选中动态Web模块复选框..-现在您完成了-

他们是解决此问题的另一种方法(请检查一下,希望它可以帮助您解决问题)

问题

无法将项目构面动态Web模块2.3的版本更改为3.0

  1. 转到您的项目位置(例如-D:/ maven / todo)
  2. 转到.setting文件夹
  3. 检查此文件:org.eclipse.wst.common.project.facet.core.xml
  4. 打开文件,并将“ jst.web”属性从2.3更改为3.0,然后保存
  5. 右键单击项目刷新项目并更新Maven
  6. 完成!!! ....

之所以使用web.xml技巧,是因为您现在要明确告诉WTP您正在使用该特定的servlet版本,而不管容器支持什么。

就我而言,我在Maven项目中使用批注配置,但没有web.xml文件。事实证明,在没有web.xml的情况下,WTP会查看您的Maven依赖项以确定要使用的Servlet版本。就我而言,我定义了以下内容:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

将其更改为6.0可以解决该问题,现在它使用的是Servlet 3.0而不是3.1,这是JavaEE 7的默认设置。由于我不得不从Tomcat 8升级到Tomcat 7,因此Tomcat 7仅支持JavaEE 6 Web概要文件。现在,一切顺利。

我遇到了同样的问题,仅编辑web.xml以及更改.settings文件夹中的文件都无济于事。我的解决方案是通过编辑pom.xml直接指向maven编译器插件以使用所需的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-> Update project,然后您可以在properties-> project facets-> Dynamic Web模块版本中更改servlet版本,或者如先前所写,通过手动编辑org.eclipse.wst.common.project.facet.core来更改。项目的.settings文件夹中的xml。

在我的情况下,dtd引用了web.xml。在像悉尼发布的那样将其更改为xsd参考后,它开始起作用。

我遇到了同样的问题,删除.settings文件夹可以解决此问题

我对不允许我在Eclipse(Mars)中更改项目方面Dynamic Web Module版本的问题的解决方案是:

  • 禁用Maven Nature
  • 确保web.xml命名空间指向正确的版本
  • 重新启用Maven Nature
  • Maven»更新项目(或按Alt + F5)

如果悉尼的回答仍然不能解决问题,请尝试以下操作。遵循悉尼的答案后,转到“属性”>“项目构面”,取消选择“动态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>

我在这里尝试了许多答案,但没有一个对我有用。然后我在这里找到有关我的问题的文章我也想在这里分享。

以下是简要执行的步骤。

  1. 设置编译器符合级别。
  2. 更新项目构面
  3. 从首选项更新已安装的JRE
  4. 在pom.xml中添加配置以使用Java 1.7,最后
  5. 从Maven更新项目。

对于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)行家:

<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

您仍然在Maven中有一个错误标记:

cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied

然后,您可以:取消选中动态Web模块,然后重新选中它。我认为这是因为eclipse文件的.settings以某种方式损坏了。关于第二个技巧,tomcat哪个版本是一个很好的说明。

尝试将常规Java项目转换为Maven项目时遇到此错误

我所做的是确定项目所需的Java编译器版本。对于我的项目,最低Java版本是1.8

通过将版本降低到比1.8我的IDE低的任何版本,将开始抱怨它无法识别大量导入的库,因此,我确定我的最低Java版本为1.8

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

在此处输入图片说明

现在,确保Java编译器版本使用与Project Facets中设置的Java版本相同的Java版本。

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same. 
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

在此处输入图片说明

更改后,应解决该错误。如果错误仍然存​​在,请右键单击项目-> Maven->更新项目

进行maven更新或重新导入项目无济于事。@悉尼的答案是正确的;此外,我还必须按照JavaServer Faces 2.2中所述要求Dynamic Web Module 2.5或更高版本,在不同的工作空间中重新创建项目。

打开org.eclipse.wst.common.project.facet.core.xml文件,并将jst.web版本更改为3.0。还将web.xml更新到版本3.0。保存并更新项目。希望这可以帮助。我正在使用Eclipse Juno

这是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。

做完了

我的是Web Module 3.0web.xml,但properties>Dynamic Web Module它是在3.1

我将其更改web.xml为:

<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

进行此更改后,请执行以下操作: right click on project>Maven>Update Project...

使用版本的此问题右键单击项目->属性->项目构面->右键单击动态Web模块->解锁->取消选中->选择2.5版本->应用->更新Maven

我通过使用正确的版本,xsd位置修改web.xml并使用正确的版本修改org.eclipse.wst.common.project.facet.core.xml并执行maven update解决了该问题

更新Maven对我有用

选择项目,然后按ALT + F5,然后选择项目,单击确定

我有相同的症状,但治愈方法不同。我试图将我的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。

这是我跳过的篮球。我不知道所有这些都是必需的,因为我从根本上不了解所有这些配置。

在Eclipse中,我经常收到一个可怕的警告:“当一个或多个安装的构面的实现不可用时,修改多面项目可能会导致项目损坏。确定要继续吗?” 这促使我进行了更频繁的提交,但是没有发生损坏。

  1. 在POM,Eclipse编译器和Eclipse Project Facets中将JDK从1.7升级到1.8。
  2. 更新以下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>

... 至:

    <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">

我不得不将Project Facets-> Dynamic Web Module从2.5更新到3.0。我试过3.1,但出现错误。

在此过程中,我经常在帖子标题中看到错误:“无法将Project Facet Dynamic Web Module的版本更改为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的这篇文章,这有所帮助。

我遇到了同样的问题-我只是从工作区中删除了项目,然后清理了“ eclipse文件/文件夹,例如:.project,.settings等),然后再次导入了maven项目,它可以正常工作。

本文地址:http://java.askforanswer.com/wufajiangproject-facetdongtaiwebmokuaidebanbengenggaiwei3-0.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!