tutorial example ejemplo development application app java eclipse maven web-applications

java - example - No se puede cambiar la versión del proyecto faceta Dynamic Web Module a 2.5



spring maven web project (10)

Heredé una aplicación web de Java de otra compañía. Intento cargarlo en Eclipse (a través de Import Maven Project) y recibir un error que dice "No puedo cambiar la versión del proyecto faceta Dynamic Web Module a 2.5".

He estado hurgando un poco, y una cosa que encuentro es que el archivo web.xml comienza con

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

y el pom.xml especifica una dependencia de

<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>

pero la carpeta .settings contiene un archivo con este

<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.6"/> <installed facet="jst.web" version="3.0"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project>

y sospecho que el 3.0 especificado aquí está en conflicto con el 2.5 especificado en otro lugar. ¿Es probable que ese sea el caso? ¿Hay alguna forma en que esta combinación de configuraciones NO pueda generar errores? (Versión anterior de Eclipse, por ejemplo?)


@TheSporkboy es casi correcto. Me encontré con esto hoy y después de algunos retoques con la configuración, la solución fue la siguiente:

1- Cambie la configuración de Dynamic Web Module en Project Facets a la última versión 3.1

2- Abra el web.xml del proyecto desde ... / web-app_2_5.xsd a ... / web-app_3_1.xsd

3- Actualización del proyecto Maven.


Abra la vista Navegador (Ventana> Mostrar vista> Otro> General) y encuentre que hay una carpeta .settings debajo de su proyecto, expanda y luego abra el archivo "org.eclipse.wst.common.project.facet.core.xml ", Realice los cambios a continuación y guarde el archivo.

Cambie la versión del módulo web dinámico en esta línea a 2.5 - <installed facet=”jst.web” version=”2.4″/>

Cambie la versión JSF en esta línea a 2.0 - <installed facet=”jst.jsf” version=”1.1″/>

Cambie la versión de Java en esta línea a 1.5 o superior - <installed facet=”java” version=”1.5″/>.

Después de estos cambios, puede cambiar la versión de Project facet Dynamic Web Module desde las propiedades del proyecto; sin darte esta advertencia



En mi caso, quería cambiar la forma dinámica faceta 2.3 a 3.1.

Lo que me ayudó fue un cambio de número en mayo web.xml

De :

<!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 > <display-name>Archetype Created Web Application</display-name> </web-app>

A :

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_5.dtd" > <web-app > <display-name>Archetype Created Web Application</display-name> </web-app>

Y luego vaya a propiedades -> Facetas del proyecto -> Desmarque el módulo web dinámico -> Aceptar

Proyecto Maven actualizado.


Esta publicación del blog me ayudó muy bien: Cómo solucionarlo No se puede cambiar la versión del proyecto Módulo web dinámico dinámico a Error 3.0 en Eclipse .

Esta publicación explica que si hace clic con el botón derecho en> propiedades> facetas del proyecto> cambiar la versión de Dynamic Web Module a la correcta no funciona, intente lo siguiente: haga clic con el botón derecho en> properties> resources> vaya a la dirección que ve en location parte de location . Abra el archivo org.eclipse.wst.common.project.facet.core y cambie la versión de jst.web como necesite. Actualiza el proyecto Deberia de funcionar :)


Mi solución fue:

Cambiar encabezado en mi web.xml:

Pongo:

<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


Supongo que los autores originales cambiaron manualmente las facetas del proyecto del proyecto Eclipse después de la importación inicial y nunca ejecutaron Maven | Actualización después de eso.

De todos modos, para los proyectos de Maven, es una buena práctica no enviar ningún metadato de Eclipse (es decir .classpath, .project, .settings/ ) a SCM y dejar que m2e los genere en la importación.

Así que recomendaría copiar la estructura de su proyecto, eliminar todos los metadatos de Eclipse de la copia y luego importarlos a través de m2e.

Si todavía hay errores en la importación, al menos puede obtener una pista donde los autores originales ajustaron los valores predeterminados, para que sepa por dónde empezar a limpiar.


Tenga en cuenta que la ubicación actual del esquema para la aplicación web es:

xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd"


debes cambiar ambos archivos!

Primer paso: cierre del eclipse

Segundo paso: cambie la etiqueta de la faceta "jst.web" en org.eclipse.wst.common.project.facet.core.xml

Y finalmente, cambie la versión de xsd en web.xml

Me funciona


version corta

Prueba esto:

  • Deseleccione el Módulo web dinámico en las facetas de su proyecto. Haga clic derecho en el Proyecto -> preferencias -> Facetas del Proyecto
  • Luego ejecuta Maven -> Update Project nuevamente.

Versión larga

He tenido este problema varias veces mientras aprendía algunas cosas dinámicas de web / resorte de eclipse y ninguna de las otras soluciones solucionó mi problema de manera confiable o me ayudó a comprender qué causaba el problema. Creo que estoy empezando a.

Por lo tanto, parece que cuando ejecuta un proyecto Maven -> Update , m2e (supongo) está AGREGANDO el Módulo web dinámico a las facetas del proyecto. Agregar es la palabra clave aquí. Así que cuando entré y actualicé web.xml desde [...] http://java.sun.com/xml/ns/javaee/web-app_2_3.xsd "version =" 2.3 "> a [...] http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "version =" 2.5 ">

Recibí el error "No se puede cambiar la versión del módulo web dinámico de la faceta del proyecto a 2.5".

Lo mismo fue cierto para 3.0 cuando intenté eso.

Parece que m2e es capaz de agregar esto a su proyecto, pero al igual que el error dice que no puede cambiarlo una vez que está configurado. Así que simplemente deseleccione en la página de facetas del proyecto. Haga clic en Aceptar para guardar sus preferencias y ejecutar Maven Update nuevamente.

No debería necesitar incluir javax.servlet en su pom.xml si tiene agregado un servidor (como tomcat) faceta.