¿No se puede cambiar la versión del módulo web dinámico de faceta de proyecto a 3.0?

329

Estoy usando maven para crear una aplicación web dinámica en Eclipse. Agregué algunas carpetas como src/test/javay src/test/resources. También cambié la biblioteca en Java Build Path para obtener JavaSE-1.7. Todo está bien hasta aquí.

Cuando intenté cambiar el módulo web dinámico de Facetas de proyectos, algo salió mal. Había cambiado el Java a 1.7 en el mismo lugar. Y todavía me dijo que no puedo cambiar la versión del módulo web dinámico de faceta de proyecto a 3.0.

He cambiado todo lo que afectaría el cambio, creo.

EdgarZeng
fuente
OKAY. Lo siento por eso. El arquetipo es maven-archetype-webapp cuando creo el Nuevo Proyecto Maven, y el Módulo Web Dinámico es 2.3 en las Facetas del Proyecto después de crear el proyecto. Quiero cambiar la versión del Módulo web dinámico a 3.0, y obtuve 'No se puede cambiar la versión del módulo web dinámico de faceta de proyecto a 3.0'
EdgarZeng
esto funcionó para mí: stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
Titi Wangsa Bin Damhore
En Eclipse Kepler, cuando hago clic derecho en la faceta 'Módulo web dinámico', muestra la opción 'Desbloquear'. Después de desbloquear, pude cambiar la versión facetaria. solo para información.
Jonathan
¿Es esto un error para el eclipse?
CDT

Respuestas:

311

Actualicé 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 -> Actualizar proyecto ...

Sydney
fuente
64
La actualización de web.xml no funcionó para mí. La solución dada por @enkor funciona: stackoverflow.com/a/18632054/378633
jplandrain
55
Aquí hay un encabezado válido para un archivo 3.1 web.xml <? Xml version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = " w3.org/2001/XMLSchema-instance " xmlns = " xmlns.jcp.org/xml/ns/javaee " xsi: schemaLocation = " xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd " id = " WebApp_ID "version =" 3.1 ">
Jakob Alexander Eichler
3
¿Qué pasa con los proyectos sin web.xml? :)
Anand Rockzz
el cambio del atributo de versión a 3.0 tampoco funcionó para mí
tequilacat
Si ninguna de las soluciones anteriores y siguientes, si no funciona, amablemente vaya a través de este enlace al 100%, funcionará.
Raki
587

Otra forma es editar el archivo de configuración de facetas del proyecto en sí: 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:

  1. Haga clic derecho en el proyecto (en el panel Explorador de proyectos ).
  2. Seleccione Maven »Actualizar proyecto (o presione Alt+F5)

Encontrará este archivo en el .settingsdirectorio dentro del proyecto Eclipse.

enkor
fuente
3
Gracias. En realidad, creo que deberíamos hacer algo más como lo anterior, cambiar la versión del módulo web en web.xml, si no, la versión 'Descriptor de implementación' no cambiará a 3.0. ¿Y eso es un error en el complemento Maven?
EdgarZeng
13
Esta parece ser la única forma de resolver este problema cuando no tiene un web.xml en su proyecto.
Shawn Sherwood
3
Ya tenía 3.0 en web.xml y STS aún no se pudo actualizar y la actualización de mvn tampoco ayudó. Este método funciona, sin embargo.
MiB
2
Esto ayudó, en realidad vaya a -> org.eclipse.wst.common.project.facet.core.xml -> eliminar todas las entradas -> proyecto de actualización de maven.
virtuvious
77
Puede encontrar el archivo org.eclipse.wst.common.project.facet.core.xml en la carpeta de su aplicación / proyecto .settings.
Rushi Shah
175

Creo que tuve el mismo problema que tú. Mi web.xml tenía la versión 2.5 mientras que el proyecto tenía el (clic 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 título Módulo web dinámico, guardé y tuve el Proyecto de actualización. Volver a despertar automáticamente es ingresar a la caja con la versión correcta. Yo uso Eclipse Kepler.

PD: mira los comentarios de Jonathan justo debajo, muy útil.

pagurix
fuente
1
¡Genial! Resolvió mi problema, pero ¿puede decirme por qué no permitía inicialmente configurar el módulo dinámico?
Suresh
26
@Suresh, creo que el problema por el que no permitía cambiar la versión es porque está bloqueado. Si hace clic con el botón derecho en la faceta 'Módulo web dinámico', se mostrará la opción 'Desbloquear'. Después de desbloquear, desmarcar la faceta DWM, volver a aplicar la faceta y realizar la actualización del proyecto maven, el error desapareció.
Jonathan
2
+1. Sin este punto extremadamente importante, otras respuestas aquí son en vano. Solo creo que el comentario de Jonatha no debería incluirse en la respuesta.
Gangnus
1
+1 @ Jonathan Tu propina hizo el trabajo. ¡Debe publicar esto como respuesta y también debemos plantear esto a Eclipse!
aksappy
En mi caso, esto funciona por qué en el módulo web pom hubo Setted otra versión de módulo web Dnamic, por lo que este proyecto de configuración de la pizca de conflictos
ocrampico
49
  1. Haga clic en la carpeta de su proyecto.
  2. Vaya a Ventana> Mostrar vista> Navegador
  3. Vaya a Navigator y expanda la carpeta .settings
  4. Abrir org.eclipse.wst.common.project.facet.core.xmlarchivo

    <?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. Cambia la versión así <installed facet="jst.web" version="3.1"/>

  6. Salvar
  7. Solo actualiza tu proyecto. Haga clic derecho en La carpeta del proyecto> Maven> Actualizar proyecto> Seleccione el proyecto y haga clic en 'Aceptar'

Solo esto me funcionó.

aabarbosa
fuente
43

Tuve el mismo problema e incluso intenté eliminar el proyecto y agregarlo nuevamente. Lo que hizo el truco fue eliminar el .settingsdirectorio.

Adrian Ber
fuente
2
También tuve que hacer esto. Estaba usando un proyecto web Spring con una configuración basada en Java, por lo que no fue posible actualizar un web.xml.
bcody
¿Por qué funcionó después de eliminar .setting? ¿Puedes explicarme?
Abhijit Chakra
Ese directorio .settings contiene muchas cosas y quizás algunas de ellas cambiaron con el tiempo. No sé exactamente qué parte influyó en este comportamiento, pero esto fue como un reinicio. Ninguna de las otras respuestas funcionó para mí, pero esta. Y parece que no fui el único en esta situación.
Adrian Ber
Me funcionó, tuve este error: "No se puede cambiar la versión de la faceta EAR del proyecto a 1.3".
Giovanni P.
¡Trabajó para mi! Tuve el error: "No se puede cambiar la versión del módulo web dinámico de faceta de proyecto a 3.0"
Anup Ghosh
24

Eliminar

.settings 
.classpatch 
.projejct 
target

e importar de nuevo el proyecto maven.

Pintér Tamás
fuente
¿Cómo importo nuevamente el Proyecto Maven? Soy nuevo en esto.
Daniel Brower
21

Lo que funcionó para mí:

  1. Cambie 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 <build>sección:

  <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 el cambio Java Build muestre 1.8. Si no es así, haga clic en EDITAR y seleccione lo que debería ser.

ingrese la descripción de la imagen aquí

  1. Modifique web.xml para que se haga referencia a 3.0 en la versión y en el enlace

ingrese la descripción de la imagen aquí

  1. Asegúrese de tener Java configurado en 1.8 en Project Facets

ingrese la descripción de la imagen aquí

  1. 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) verifíquelo nuevamente. Se debe configurar la nueva versión 3.0. **

ingrese la descripción de la imagen aquí

Después de aplicar y verificarlo nuevamente:

ingrese la descripción de la imagen aquí

Espero que esto ayude.

Witold Kaczurba
fuente
15

Haga clic derecho en el proyectoPropiedades ; en Project Facets , anule la selección de Dynamic Web Module (la versión debe ser 3.1 ) y anule la selección de 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 anterior param-namey similares.

Finalmente, Maven -> Actualizar proyecto .

Henry Ren
fuente
8

abre la vista del navegador y sigue el paso

  1. (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", haga el a continuación cambia y guarda el archivo.
  2. Cambie la versión del módulo web dinámico en esta línea a 2.5 -
  3. Cambie la versión de Java en esta línea a 1.5 o superior -.
GAURAV KUMAR GUPTA
fuente
55
Olvidó decir qué vista debe seleccionar en la carpeta "General" en el cuadro de diálogo "Mostrar vista". ¿Es la vista "Navegador"?
Roberto Linares
6

Abra web.xml desde la estructura del proyecto http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Aplicación web Servlet 3.0

y actualice el archivo web.xml, por ejemplo change version = "2.5"

Cambie también el archivo org.eclipse.wst.common.project.facet.core.xml del archivo .settings de su proyecto. Siga los pasos 1. Ventana> Mostrar vista> Otro> General> Navegador

  1. Hay una carpeta .settings debajo de su directorio de proyecto

  2. 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 para encontrar 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 imágenes.

Siddaram
fuente
Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia.
Micha
He realizado cambios en el archivo pom.xml como se muestra en crunchify.com/… . Sin embargo, eso no fue suficiente. También tuve que seguir la recomendación para abrir la carpeta .settings y editar el archivo o el archivo.eclipse.wst.common.project.facet.core.xml.
blackjack
6

Los mejores y simples pasos que resolvieron este problema para mí son 1) Propiedades -> Facetas del proyecto -> Deseleccionar / desmarcar la casilla de verificación del Módulo web dinámico -> Aplicar 2) Ahora cambie a la versión deseada Aplicar 3) Marque la casilla de verificación Módulo web dinámico .. --Ahora has terminado -

soleado
fuente
1
Funcionó bien, pero ¿cuál es la consecuencia de esto?
sg28
4

Es una forma más de resolver este problema (échale un vistazo y espero que te ayude a resolverlo).

PROBLEMA

No se puede cambiar la versión del módulo web dinámico de faceta de proyecto 2.3 a 3.0

SOLUCIÓN

  1. Vaya a la ubicación de su proyecto (ej.-D: / maven / todo)
  2. ir a la carpeta .setting
  3. compruebe este archivo: org.eclipse.wst.common.project.facet.core.xml
  4. abra el archivo y cambie la propiedad "jst.web" de 2.3 a 3.0, y guarde
  5. Haga clic derecho en el proyecto, actualice el proyecto y actualice Maven
  6. ¡¡¡Hecho!!!....
chhaya Joshi
fuente
3

El truco web.xml funciona porque ahora le está diciendo explícitamente a WTP que está utilizando esa versión de servlet específica, independientemente de lo que admita el contenedor.

En mi caso, estoy usando la configuración de anotación dentro de un proyecto Maven y no tengo un archivo web.xml. Resulta que en ausencia de un web.xml, WTP examina 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 usa Servlet 3.0 en lugar de 3.1, que es el valor predeterminado para JavaEE 7. Dado que tuve que pasar de Tomcat 8 a Tomcat 7, Tomcat 7 solo es compatible con el perfil web JavaEE 6. Ahora las cosas funcionan maravillosamente.

Ryan J. McDonough
fuente
3

Tuve el mismo problema, editar web.xml y cambiar el archivo en la carpeta .settings solo no ayudó. Mi solución fue apuntar directamente el complemento del compilador maven para usar la versión deseada de Java 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 su proyecto.

troy
fuente
2

En mi caso, el web.xml fue referenciado por un dtd. Después de cambiar esto a referencia xsd como el publicado por Sydney funcionó.

keiki
fuente
2

Tuve el mismo problema, eliminar la carpeta .settings resolvió el problema

Nagababu
fuente
1

Mi solución al problema que no me permitió cambiar la versión del módulo web dinámico de facetas del proyecto en Eclipse (Marte) fue:

  • Deshabilitar Maven Nature
  • Asegúrese de que los espacios de nombres web.xml apunten a la versión correcta
  • Rehabilitar Maven Nature
  • Maven »Actualizar proyecto (o presione Alt + F5)
Andrés S.
fuente
1

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 seleccione nuevamente. Aplicar> Guardar y actualizar 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>

punkck
fuente
1

Intenté muchas de las respuestas aquí, pero ninguna funcionó para mí. Luego encontré un artículo sobre mi problema aquí . Pensé en compartirlo aquí también.

A continuación se detallan los pasos dados brevemente.

  1. Establecer el nivel de cumplimiento del compilador.
  2. Actualizar faceta del proyecto
  3. Actualizar JRE instalado desde las preferencias
  4. Agregar configuración en pom.xml para usar java 1.7 y finalmente
  5. proyecto de actualización de Maven.
MD Faisal
fuente
1

Para un proyecto web de eclipse maven, el cambio de la versión del módulo web dinámico debe 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 ruta de compilación de eclipse y la versión del compilador es 1.7

todavía 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 marcarlo. Creo que es porque .settings del archivo eclipse está dañado de alguna manera. Sobre el segundo consejo tomcat qué versión es una buena nota.

Tiina
fuente
1

Recibí este error cuando trato de convertir un Proyecto Java general a Proyecto Maven .

Lo que hice fue determinar la versión del compilador de Java que requiere mi proyecto. Para mi proyecto, la versión mínima de Java es1.8 .

Al reducir la versión a algo más bajo que 1.8mi IDE, comenzaré a quejarme de que no reconoce un montón de bibliotecas importadas, por lo tanto, determino mi versión mínima de Java como1.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

ingrese la descripción de la imagen aquí

Ahora asegúrese de que la versión del compilador de Java use la misma versión de Java que la que configuró en Project Facets.

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.

ingrese la descripción de la imagen aquí

Después de los cambios, el error debe resolverse. Si el error persiste, haga clic con el botón derecho en proyecto -> Maven -> Actualizar proyecto

usuario3437460
fuente
0

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

Sheetal
fuente
0

Esta es una variación de la respuesta de pagurix, pero usando Eclipse Mars.

Cambie su archivo web.xml a web.bak

Ignora los errores, lo regeneraremos a continuación.

Vaya a las propiedades del proyecto -> facetas del proyecto y configure la versión de Dynamic Web Module a lo que necesita. Eclipse ahora te permite guardar.

Ahora haga clic derecho en el proyecto. Elija Java EE Tools -> Generar despliegue del descriptor de despliegue.

Esto crea un nuevo web.xml con la versión requerida.

Abra el nuevo web.xml y copie el encabezado XML y la etiqueta de apertura completa de la aplicación web en su web.bak original, elimine el nuevo web.xml y cambie el nombre de web.bak a web.xml.

Hecho.

Adán
fuente
0

El mío estaba Web Module 3.0adentro web.xml, pero adentro properties>Dynamic Web Moduleestaba encendido3.1

Cambié el web.xmla 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...

Amin Sh
fuente
0

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-> desbloquearlo-> desmarcar-> seleccione la versión 2.5-> Aplicar-> Actualizar el maven

Gen
fuente
0

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 .

Vaibs
fuente
0

actualizar Maven funcionó para mí

seleccione proyecto luego presione ALT + F5 luego seleccione proyecto haga clic en Aceptar

Hari
fuente
0

Tuve el mismo síntoma con una cura diferente. Intenté actualizar mi aplicación web JSF 2.2.4 / Spring 3.0 a JSF 2.3 para disfrutar de los nuevos enganches JSF websocket allí y Eclipse (en realidad STS) no cooperaría. En Project Facets 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: el máximo que alcanzaría fue 2.2.

Aquí están los aros por los que salté. No sé si todo esto era necesario porque básicamente no entiendo toda esta configuración.

En Eclipse recibí con frecuencia una advertencia aterradora: "Modificar 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 llevó a hacer compromisos más frecuentes, pero no se produjo corrupción.

  1. Actualice JDK de 1.7 a 1.8 en POM, compilador de Eclipse y facetas de proyecto de Eclipse.
  2. Actualice 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 obtuve errores.

En este proceso frecuentemente 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 faceta de 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, Project Facets todavía advirtió "No se pudo encontrar la implementación de la versión 2.3 del proyecto facet jst.jsf. La funcionalidad será limitada". Sospecho que esto simplemente significa que el autocompletado y otras comodidades de Eclipse no estarán disponibles porque no puede encontrar la implementación de JSF 2.3 declarada en mi POM.

Espero que esto ayude a alguien. Las búsquedas en Google arrojaron solo esta publicación de Ali Bassam e indirectamente BalusC que ayudó.

perro serpiente
fuente
0

Tuve el mismo problema: acabo de eliminar el proyecto de mi espacio de trabajo, luego limpié los "archivos / carpetas eclipse, por ejemplo: .project, .settings, etc.) y luego importé el proyecto maven nuevamente, funcionó.

Thomás Preis
fuente