java - run - maven eclipse tutorial
¿No se puede cambiar la versión del módulo web dinámico del proyecto a 3.0? (28)
Estoy utilizando maven para crear una aplicación web dinámica en Eclipse. Agregué algunas carpetas como src/test/java
y src/test/resources
. También cambié la biblioteca en Java Build Path para obtener el JavaSE-1.7. Está todo bien hasta aquí.
Cuando intenté cambiar el módulo web dinámico de Projects Facet, algo salió mal. Había cambiado el Java a 1.7 en el mismo lugar. Y aún así me dijo, no se puede cambiar la versión de la faceta del proyecto Dynamic Web Module a 3.0.
Creo que he cambiado todo lo que afectaría el cambio.
- Haga clic en la carpeta de su proyecto.
- Vaya a Ventana> Mostrar vista> Navegador
- Vaya a Navigator y expanda la carpeta .settings
Abra el archivo
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>
Cambie la versión como esta
<installed facet="jst.web" version="3.1"/>
- Salvar
- Solo actualiza tu proyecto. Haga clic con el botón derecho en La carpeta del proyecto> Maven> Actualizar proyecto> Seleccione el proyecto y haga clic en ''Aceptar''
Solo esto me funcionó.
Abra el archivo org.eclipse.wst.common.project.facet.core.xml y cambie la versión jst.web a 3.0. También actualice el web.xml a la versión 3.0. Guarda y actualiza el proyecto. Espero que esto ayude. Estoy usando Eclipse Juno
Abra web.xml desde la estructura del proyecto http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Servlet 3.0 Web Application
y actualice el archivo web.xml, por ejemplo, cambie la versión = "2.5"
También cambie el archivo org.eclipse.wst.common.project.facet.core.xml de su proyecto .settings siga los pasos 1. Ventana> Mostrar vista> Otro> General> Navegador
Hay una carpeta .settings en el directorio de su proyecto
Cambie la versión del módulo web dinámico en esta línea a 2.5 4. Cambie la versión de Java en esta línea a 1.5 o superior
Ahora actualice su proyecto y prepárese para ejecutarse en su servidor.
Siga el blog de la solución http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html
La solución se produce con ilustraciones de imagen.
Borrar
.settings
.classpatch
.projejct
target
Y volver a importar el proyecto maven.
Creo que tuve el mismo problema que tú. Mi web.xml tenía la versión 2.5, mientras que el proyecto tenía (haga clic con el botón derecho en Proyecto-> Propiedades-> Facetas del proyecto->) Módulo web dinámico 2.3.
Aunque intenté cambiar la versión de 2.3 a 2.5, ECLIPSE no lo permitió. Solución: Eliminé la marca de verificación bajo el encabezado Módulo web dinámico, guardé y tenía Proyecto de actualización. Volver a despertar automáticamente es entrar en el cuadro con la versión correcta. Yo uso Eclipse Kepler.
ps: mira los comentarios de Jonathan justo debajo, muy útil.
El mío era Web Module 3.0
en web.xml
, pero en properties>Dynamic Web Module
Estaba en 3.1
Cambié el web.xml
a esto:
<?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">
después de este cambio, haga: right click on project>Maven>Update Project...
El truco web.xml funciona porque ahora le está diciendo explícitamente a WTP que está utilizando esa versión específica de servlet, independientemente de lo que admita el contenedor.
En mi caso, estoy usando la configuración de anotación dentro de un proyecto de Maven y no tengo un archivo web.xml. Resulta que en ausencia de un web.xml, WTP revisa sus dependencias de Maven para determinar qué versión de Servlet usar. En mi caso, había definido lo siguiente:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
Cambiarlo a 6.0 solucionó el problema y ahora está usando Servlet 3.0 en lugar de 3.1, que es el valor predeterminado para JavaEE 7. Ya que tuve que pasar de Tomcat 8 a Tomcat 7, Tomcat 7 solo admite el perfil web JavaEE6. Ahora las cosas funcionan maravillosamente.
En mi caso el web.xml fue referenciado por un dtd. Después de que cambié esto a la referencia xsd como la publicada por Sydney funcionó.
Esta es una forma más de resolver este problema (verifíquelo para que le ayude a resolver su problema)
PROBLEMA
No se puede cambiar la versión del módulo web dinámico faceta del proyecto 2.3 a 3.0
SOLUCIÓN
- Vaya a la ubicación de su proyecto (ej.-D: / maven / todo)
- ir a la carpeta .setting
- compruebe este archivo: org.eclipse.wst.common.project.facet.core.xml
- abra el archivo y cambie la propiedad "jst.web" de 2.3 a 3.0, y guarde
- Haga clic derecho en el proyecto actualizar el proyecto y actualizar Maven
- ¡¡¡Hecho!!!....
Esta es una variación de la respuesta de pagurix, pero usando Eclipse Mars.
Cambia tu archivo web.xml a web.bak
Ignora los errores, los regeneraremos a continuación.
Vaya a las propiedades del proyecto -> facetas del proyecto y configure la versión del Módulo Web Dinámico a lo que necesita. Eclipse ahora te permite guardar.
Ahora haga clic derecho en el proyecto. Elija Java EE Tools -> Generar Desglose Descriptor de Implementación.
Esto crea un nuevo web.xml con la versión requerida.
Abra el nuevo web.xml y cópielo a través de la cabecera XML y la etiqueta de apertura de la aplicación web completa en su web.bak original, elimine el nuevo web.xml y cambie el nombre de web.bak a web.xml.
Hecho.
Este problema con la versión, haga clic con el botón derecho en el proyecto-> propiedades-> Facetas del proyecto-> haga clic con el botón derecho en Dynamic Web Module-> desbloquéelo-> desmarque-> seleccione 2.5 versión-> Aplicar-> Actualizar el maven
Haga clic derecho en el proyecto → Propiedades ; en Project Facets , deseleccione Dynamic Web Module (la versión debería ser 3.1 ) y deseleccione JavaServer Faces (la versión es 2.2 ).
Cambia esto:
<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">
a esto:
<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">
Luego elimine el prefijo antes de param-name
y similares.
Finalmente, Maven -> Proyecto de actualización .
Intenté muchas de las respuestas aquí, pero ninguna de ellas funcionó para mí. Entonces encontré un artículo sobre mi problema here . Pensé en compartirlo aquí también.
A continuación se presentan los pasos tomados en breve.
- Establecer el nivel de cumplimiento del compilador.
- Actualizar faceta del proyecto
- Actualizar JRE instalado desde preferencias
- Añadiendo configuración en pom.xml para usar java 1.7 y finalmente
- Actualización del proyecto de Maven.
La actualización de Maven o la reimportación del proyecto no ayudaron. La respuesta de @ Sydney es correcta; Además, tengo que recrear el proyecto en un espacio de trabajo diferente, como se dijo en JavaServer Faces 2.2, requiere Dynamic Web Module 2.5 o más reciente.
Lo que funcionó para mí:
- Cambia el Java a 1.8 (o 1.7)
En su POM, debe configurar el complemento del compilador a la versión 1.8 (o 1.7) en la sección <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>
Asegúrese de que los cambios en Java Build se muestran en 1.8. Si no lo hace, haga clic en EDITAR y seleccione lo que debería ser.
- Modifique web.xml para que se haga referencia a 3.0 en la versión y en el enlace
- Asegúrate de tener Java configurado en 1.8 en Facetas del proyecto
- En esta etapa todavía no podía cambiar el Módulo Web Dinámico;
En lugar de cambiarlo:
a) desmarque el módulo web dinámico
b) aplicar
c) Vuelve a comprobarlo. Se debe configurar la nueva versión 3.0. **
Después de aplicarlo y comprobarlo de nuevo:
Espero que esto ayude.
Los mejores y simples pasos resueltos para este problema son: 1) Propiedades -> Facetas del proyecto -> Deseleccionar / desmarcar la casilla de verificación del Módulo web dinámico -> Aplicar 2) Cambiar a la versión deseada Aplicar 3) Marcar la casilla de verificación Módulo web dinámico .. --Ahora ya está hecho -
Mi solución al problema que no me permitió cambiar la versión del módulo web dinámico de la faceta del proyecto en Eclipse (Marte) fue:
- Deshabilitar la naturaleza de Maven
- Asegúrese de que los espacios de nombres web.xml apuntan a la versión correcta
- Rehabilitar la naturaleza de Maven
- Maven »Proyecto de actualización (o presione Alt + F5)
Otra forma es editar el propio archivo de configuración de facetas del proyecto: org.eclipse.wst.common.project.facet.core.xml
Cambie la versión del módulo web dinámico en esta línea a 3.0 - <installed facet="jst.web" version="2.5"/>
Y entonces:
- Haga clic derecho en el proyecto (en el panel Explorador de proyectos ).
- Seleccione Maven »Actualizar proyecto (o presione Alt + F5 )
Encontrará este archivo en el directorio .settings
dentro del proyecto Eclipse.
Para un proyecto web de eclipse de Maven, cambiar la versión del módulo web dinámico necesita verificar tres lugares. Si uno usa eclipse, y después de haber verificado lo siguiente: 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) la versión de compilación de eclipse y la versión del compilador es 1.7
Aún tienes un marcador de error en Maven:
cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied
Luego, puede: desmarcar el módulo web dinámico y volver a verificarlo. Creo que es porque .settings del archivo eclipse está dañado de alguna manera. Sobre el segundo tip tomcat que versión es una buena nota.
Resolví el problema modificando web.xml con la versión correcta, ubicaciones xsd y modificando org.eclipse.wst.common.project.facet.core.xml con la versión correcta y haciendo la actualización de Maven .
Si la respuesta de Sydney todavía no ayuda, intente a continuación. Después de seguir la respuesta de Sydney, vaya a Propiedades> Facetas de proyectos deseleccione el Módulo web dinámico y luego cambie la versión para que coincida con su web.config y luego vuelva a seleccionar. Aplicar> Guardar Entonces Actualización 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>
Tuve el mismo problema e incluso intenté eliminar el proyecto y volver a agregarlo. Lo que hizo el truco fue eliminar el directorio .settings
.
Tuve el mismo problema, al eliminar la carpeta .settings se resolvió el problema
Tuve el mismo problema, editar web.xml y cambiar el archivo solo en la carpeta .settings no me ayudó. Mi solución fue apuntar directamente el plugin de compilador de maven para usar la versión java deseada editando pom.xml:
<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>
Ahora ejecute Maven-> Actualizar proyecto y luego puede cambiar la versión de los servlets en propiedades-> facetas del proyecto-> Versión del módulo web dinámico o, como se escribió anteriormente, editando manualmente org.eclipse.wst.common.project.facet.core. xml en la carpeta .settings de tu proyecto.
Tuve el mismo síntoma con una cura diferente. Estaba intentando actualizar mi aplicación web JSF 2.2.4 / Spring 3.0 a JSF 2.3 para disfrutar de los nuevos ganchos websocket de JSF allí y Eclipse (en realidad, STS) no cooperaría. En las Facetas del proyecto de Eclipse, JSF 2.3 nunca estuvo disponible hasta que edité directamente el archivo org.eclipse.wst.common.project.facet.core.xml como se indicó en las respuestas anteriores; lo más alto que obtendría era 2.2.
Aquí están los aros que salté a través. No sé que todo esto fuera necesario porque, básicamente, no entiendo toda esta configuración.
En Eclipse con frecuencia recibí una advertencia aterradora: "La modificación de un proyecto facetado cuando las implementaciones de una o más facetas instaladas no están disponibles puede resultar en un proyecto dañado. ¿Está seguro de que desea continuar?" Esto me impulsó a hacer confirmaciones más frecuentes pero no se produjo ningún daño.
- Actualice JDK de 1.7 a 1.8 en POM, el compilador Eclipse y las Facetas del proyecto Eclipse.
Actualiza las siguientes dependencias de Maven:
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency>
... a:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency>
... y ...
<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>
... a:
<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>
Tuve que actualizar mis declaraciones de espacio de nombres web.xml desde:
<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">
... a:
<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">
Tuve que actualizar Project Facets -> Dynamic Web Module de 2.5 a 3.0. Intenté 3.1 pero conseguí errores.
En este proceso, con frecuencia recibí el error en el título de esta publicación, "No se puede cambiar la versión del módulo web dinámico de la faceta del proyecto a 3.0" y Eclipse se negó a compilar el proyecto u ofrecer JSF 2.3 en las facetas del proyecto. Cuando edité el archivo org.eclipse.wst.common.project.facet.core.xml según lo indicado, los errores desaparecieron, Eclipse ofreció JSF 2.3 en Project Facets, y el proyecto se compiló y funcionó bien en Tomcat 9.0.8. Sin embargo, las Facetas del proyecto aún advirtieron "No se pudo encontrar la implementación de la versión 2.3 de la faceta del proyecto jst.jsf. La funcionalidad será limitada". Sospecho que esto simplemente significa que el autocompletar y otras conveniencias de Eclipse no estarán disponibles porque no puede encontrar la implementación JSF 2.3 declarada en mi POM.
Espero que esto ayude a alguien. Las búsquedas de Google produjeron solo esta publicación de Ali Bassam e indirectamente BalusC que ayudó.
por favor abre la vista del navegador y sigue el paso
- (Ventana> Mostrar vista> Otro> General) y descubra que hay una carpeta .settings en su proyecto, expándala y luego abra el archivo "org.eclipse.wst.common.project.facet.core.xml", haga el debajo cambia y guarda el archivo.
- Cambie la versión del módulo web dinámico en esta línea a 2.5 -
- Cambie la versión de Java en esta línea a 1.5 o superior -.
web.xml
mi 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>
y luego solo Maven -> Update Project ...
Actualización de Maven trabajó para mí
seleccione el proyecto y luego presione ALT + F5 y luego seleccione el proyecto haga clic en Aceptar