我尝试了一些东西,但这个问题仍然存在。我正在使用Eclipse Kepler。我在导入maven项目时出现以下错误
无法安装JavaServer Faces 2.2:未满足一个或多个约束
JavaServer Faces 2.2需要动态Web模块2.5或更高版本
1)我尝试了Maven Java EE Configuration Marker with Java Server Faces 1.2中提到的一些事情,但没有运气。 2)我也进入.settings并修改了org.eclipse.wst.common.project.facet.core.xml并修改了jst.web以指向2.5或3.0版本;但我还有其他一些错误。
我试图让Sencha GXT示例在基于http://neiliscoding.blogspot.ie/2012/05/how-to-setup-examples-for-use-in-gxt-3.html的maven / eclipse构建中工作,并且让这个javaserver在eclipse中遇到问题。 这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- POM file generated with GWT webAppCreator -->
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>xx</artifactId>
<groupId>ss</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>guis</artifactId>
<packaging>war</packaging>
<name>GWT Maven Archetype</name>
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.5.1</gwtVersion>
<!-- GWT needs at least java 1.5 -->
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.google.gwt.inject</groupId>
<artifactId>gin</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwtVersion}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<classifier>sources</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt-chart</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>uibinder-bridge</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<!-- <goal>i18n</goal> -->
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
documentation at codehaus.org -->
<configuration>
<runTarget>guis.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<i18nMessagesBundle>com.harmonia.client.Messages</i18nMessagesBundle>
</configuration>
</plugin>
<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<!-- <goals> <goal>exploded</goal> </goals> -->
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
这是我的web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app> -->
<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>GXT Created Web Application</display-name>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>guis.html</welcome-file>
</welcome-file-list>
正如您所看到的,我在上面的web.xml中尝试了不同的dtd,但我仍然遇到了问题。非常感谢任何提示
答案 0 :(得分:25)
我也遇到过Maven项目。这是解决问题所必须做的事情:
首先更新您的web.xml,如ThorbjørnRavnAndersen所述。我使用的是3.0版本,如下所示:
<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>
然后右键单击您的项目并选择属性 - &gt;项目方面 在那里,您将看到动态Web模块的版本。这需要从版本2.3或其他版本更改为版本2.5或更高版本(我选择3.0)。
但要做到这一点,我必须取消选中动态网络模块的勾选框 - &gt;单击应用,然后对项目执行Maven更新。回到Project Facets窗口,它应该已经匹配你的web.xml配置 - 在我的情况下为3.0。如果没有,你应该能够改变它。
如果这对您不起作用,请尝试右键单击Dynamic Web Module Facet并选择更改版本(并确保它未锁定)。
希望有效!
答案 1 :(得分:20)
您的问题是您已将web.xml标记为符合servlet 2.3(或者甚至不是 - 我不确定您的注释中的doctype是如何解释的)
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
并且您需要至少使用servlet 2.5才能使Eclipse工具正常工作。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
(未经测试 - 从http://javahowto.blogspot.dk/2009/10/sample-webxml-servlet-25.html复制)
您可能需要重新创建Eclipse项目以获取更改。
答案 2 :(得分:2)
我遇到了同样的问题,在我的web.xml中有2.5版,而项目有(右键单击Project-&gt; Properties-&gt; Progect Facets-&gt;)动态Web模块2.3。虽然我试图将版本从2.3更改为2.5但ECLIPSE不允许这样做。
Solution:
我删除了动态网络模块标题下的复选标记,我已保存并且我有更新项目。自动重新唤醒正在进入具有正确版本的框。
答案 3 :(得分:2)
我为此问题找到的解决方案是
1)右键单击项目&gt;属性&gt;取消选中动态Web模块&gt;应用并关闭。
2)右键单击项目&gt; Maven&gt;更新项目...
答案 4 :(得分:1)
我自己的解决方案是将严格依赖放在pom.xml中。
如果项目在facet中声明为3.1 Web Dynamic Project,则java.servlet-api依赖项也必须是3.1.0(或3.1.x)版本。
在我的情况下,我留下了3.0.1版本,从而在&#34;问题&#34;中引出了这个特定的错误信息。观点:
无法将项目构面动态Web模块的版本更改为3.0。 一个或多个约束条件尚未得到满足。
(当然要确保你的web.xml也必须是3.1)。
答案 5 :(得分: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>Archetype Created Web Application</display-name>
错误仍然存在。但在遵循以下链接中提出的建议后,问题得以解决。
答案 6 :(得分:1)
试试这个: 在Eclipse中删除项目。删除Eclipse项目,而不是您的应用程序!它应该从项目列表中消失。 在Windows资源管理器中找到项目目录并删除目录.settings和target(如果找到)并删除文件.project和.classpath。 回到Eclipse,导入现有的Maven项目。这就是全部!
假设您的web.xml具有正确的标题&lt; web-app&gt;到您的目标JSF版本。
答案 7 :(得分:0)
**打开项目的pom.xml并添加此插件标记 最后,右键单击您的项目&gt; Maven&gt;更新项目......
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
**
答案 8 :(得分:0)
我遇到了这个问题,ThorbjørnRavnAndersen的回答没有帮助,因为我已经在Dynamic Web Module 2.5。几年前我遇到过同样的问题并放弃了。决定重新调查我最初做的是尝试通过取消选中来删除对“动态Web模块”的支持 - 但是嘿,它被锁定了?所以我解锁了它并禁用/取消选中它。然后我解锁了JavaServer Faces,取消选中它,点击申请 - 没有爆炸!用手指交叉,然后重新检查动态Web模块并将其设置为3.1。然后我重新检查了JavaServer Faces,将其设置为2.2。点击申请 - 没有“大坏蛋热潮”,它有效 - 盈利!希望这可以帮助其他任何有同样问题的人,也不依赖于调整XML文件。
注意我也确实将java分面版本设置为1.8以及它是必需的。
答案 9 :(得分:0)
对我来说,以前没有工作。
对我来说,与该链接中所描述的几乎相同。
我遇到的问题
答案 10 :(得分:0)
我有相同的错误,并且已解决以下问题:
步骤1:更新web.xml文件,并添加以下代码
<web-app 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"
version="3.1">
</web-app>
第2步:在项目文件夹上单击鼠标,然后选择 属性 ,然后搜索“项目构面” 。您需要取消选中“动态Web模块”,然后应用并关闭它。 See Eclipse properties
第3步:更新您的Maven,然后就可以了。
答案 11 :(得分:0)
我按照以下步骤进行操作。
右键单击项目->属性->项目构面。标记动态Web模块, JavaServer Faces ,然后选择项目的版本。 (如果收到消息无法更改项目构面动态Web模块的版本,请执行下一个教程How to fix Cannot change version of project facet Dynamic Web Module)
删除 web.xml 文件,然后右键单击项目-> Java EE工具->生成部署描述符存根。>
从eclipse中删除项目(不要删除源),然后在项目根目录级别执行:
mvn eclipse:clean
mvn eclipse:eclipse
mvn clean install -X
将项目重新导入为现有Maven项目。
我的web.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>jsf-sample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>