Impossibile modificare la versione del modulo Web dinamico del facet del progetto in 3.0?


329

Sto usando Maven per creare una webapp dinamica in Eclipse. Ho aggiunto alcune cartelle come src/test/javae src/test/resources. Inoltre ho modificato la libreria in Java Build Path per ottenere JavaSE-1.7. Va tutto bene fino a qui.

Quando ho provato a cambiare il modulo Web dinamico di Facet dei progetti qualcosa è andato storto. Ho cambiato Java in 1.7 nello stesso posto. E mi ha ancora detto, non è possibile cambiare la versione del modulo Web dinamico del facet del progetto in 3.0.

Penso di aver cambiato tutto ciò che avrebbe effetto sul cambiamento.


OK. Mi dispiace per questo. L'archetipo è maven-archetype-webapp quando creo il nuovo progetto Maven e il modulo Web dinamico è 2.3 nelle facce del progetto dopo aver creato il progetto. Voglio cambiare la versione del Dynamic Web Module in 3.0 e ho ottenuto "Impossibile modificare la versione del modulo Web dinamico del facet del progetto in 3.0"
EdgarZeng


In Eclipse Kepler, quando faccio clic con il pulsante destro del mouse sulla faccetta "Modulo Web dinamico", viene visualizzata l'opzione "Sblocca". Dopo aver sbloccato, sono stato in grado di modificare la versione di sfaccettatura. solo per informazioni.
Jonathan,

È un bug per l'eclissi?
CDT,

Risposte:


311

Ho aggiornato il mio 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>

e poi solo Maven -> Aggiorna progetto ...


64
L'aggiornamento di web.xml non ha funzionato per me. La soluzione data dalla @enkor funziona: stackoverflow.com/a/18632054/378633
jplandrain

5
Ecco un'intestazione valida per un file 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
che dire dei progetti senza web.xml? :)
Anand Rockzz il

la modifica dell'attributo versione in 3.0 non ha funzionato neanche per me
tequilacat

Se nessuna delle soluzioni sopra e sotto se non funziona gentilmente passare attraverso questo link al 100% funzionerà.
Raki,

587

Un altro modo è modificare il file di configurazione delle facce del progetto stesso: org.eclipse.wst.common.project.facet.core.xml

Cambia la versione del modulo web dinamico in questa riga in 3.0 - <installed facet="jst.web" version="2.5"/>

E poi:

  1. Fare clic con il tasto destro del mouse sul progetto (nel pannello Esplora progetti ).
  2. Seleziona Maven »Aggiorna progetto (o premi Alt+F5)

Troverai questo file nella .settingsdirectory all'interno del progetto Eclipse.


3
Grazie. In realtà penso che dovremmo fare qualcos'altro come sopra, cambiare la versione del modulo web in web.xml, in caso contrario, la versione 'Deployment Descriptor' non cambierà in 3.0. Ed è un bug nel plugin Maven?
EdgarZeng,

13
Questo sembra essere l'unico modo per risolvere questo problema quando si va senza un web.xml nel progetto.
Shawn Sherwood,

3
Avevo già 3.0 in web.xml e STS non riusciva ancora ad aggiornarlo e l'aggiornamento mvn non ha aiutato neanche. Questo metodo funziona, tuttavia.
MiB

2
Questo ha aiutato, in realtà vai a -> org.eclipse.wst.common.project.facet.core.xml -> rimuovi tutte le voci -> maven update project.
virtuoso

7
Puoi trovare il file org.eclipse.wst.common.project.facet.core.xml nella cartella .settings dell'applicazione / progetto.
Rushi Shah,

175

Penso di avere avuto lo stesso problema come te. Il mio web.xml aveva la versione 2.5 mentre il progetto aveva il (tasto destro del mouse su Progetto-> Proprietà-> Sfaccettature->) Modulo Web dinamico 2.3.

Anche se ho provato a cambiare la versione da 2.3 a 2.5 ECLIPSE non me lo ha permesso. Soluzione: ho rimosso il segno di spunta sotto l'intestazione Dynamic Web Module, ho salvato e avevo il progetto di aggiornamento. Il risveglio automatico sta entrando nella casella con la versione corretta. Uso Eclipse Kepler.

ps: guarda i commenti di Jonathan proprio sotto, molto utili.


1
Ottimo! Ha risolto il mio problema, ma puoi dirmi perché inizialmente non è stato permesso di impostare il modulo dinamico.
Suresh,

26
@Suresh, penso che il problema per cui non è stato permesso di cambiare la versione sia perché è bloccato. Se si fa clic con il tasto destro del mouse sul facet "Modulo Web dinamico", verrà visualizzata l'opzione "Sblocca". Dopo aver sbloccato, deselezionato il facet DWM, riapplicato il facet ed eseguito l'aggiornamento del progetto, l'errore è scomparso.
Jonathan,

2
+1. Senza questo punto estremamente importante, le altre risposte qui non servono a niente. Solo io penso che il commento di Jonathan non debba essere incluso nella risposta.
Gangnus,

1
+1 @Jonathan Il tuo consiglio ha funzionato. Devi pubblicarlo come risposta e dovremmo anche innalzarlo a Eclipse!
aksappy,

Nel mio caso funziona perché nel modulo web pom è stata impostata un'altra versione per il modulo web Dnamic, quindi questo è in conflitto con la configurazione del progetto
ocrampico

49
  1. Fai clic sulla cartella del tuo progetto.
  2. Vai a Finestra> Mostra vista> Navigatore
  3. Vai su Navigator ed espandi la cartella .settings
  4. Apri il org.eclipse.wst.common.project.facet.core.xmlfile

    <?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 versione in questo modo <installed facet="jst.web" version="3.1"/>

  6. Salva
  7. Aggiorna il tuo progetto. Fare clic con il tasto destro su Cartella del progetto> Maven> Aggiorna progetto> Selezionare il progetto e fare clic su "OK"

Solo questo ha funzionato per me.


43

Ho avuto lo stesso problema e ho anche provato a rimuovere il progetto e aggiungerlo di nuovo. Quello che ha fatto il trucco era rimuovere la .settingsdirectory.


2
Ho anche dovuto farlo. Stavo usando un progetto web Spring con una configurazione basata su Java, quindi non è stato possibile aggiornare un web.xml per me.
bcody,

Perché ha funzionato dopo aver eliminato il .setting, per favore, si può ricapitolare
Abhijit Chakra,

Quella directory .settings contiene molte cose e forse alcune sono cambiate nel tempo. Non so esattamente quale parte abbia influenzato questo comportamento, ma è stato come un reset. Nessuna delle altre risposte ha funzionato per me, ma questa. E sembra che non fossi l'unico in questa situazione.
Adrian Ber,

Ha funzionato per me, ho riscontrato questo errore: "Impossibile modificare la versione dell'EAR facet del progetto in 1.3".
Giovanni P.

Ha funzionato per me! Ho avuto l'errore: "Impossibile modificare la versione del modulo Web dinamico del facet del progetto in 3.0"
Anup Ghosh

24

Elimina

.settings 
.classpatch 
.projejct 
target

e importare di nuovo il progetto maven.


Come importare di nuovo il progetto Maven. Sono nuovo di questo.
Daniel Brower,

21

Cosa ha funzionato per me:

  1. Cambia Java in 1.8 (o 1.7)

Nel tuo POM - devi impostare il plugin del compilatore sulla versione 1.8 (o 1.7) nella <build>sezione:

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

Assicurarsi che il cambiamento Java Build mostri 1.8. In caso contrario, fai clic su MODIFICA e seleziona come dovrebbe essere.

inserisci qui la descrizione dell'immagine

  1. Modifica web.xml in modo che 3.0 sia referenziato nella versione e nel link

inserisci qui la descrizione dell'immagine

  1. Assicurati di avere Java impostato su 1.8 in Project Facets

inserisci qui la descrizione dell'immagine

  1. A questo punto non potevo ancora cambiare Dynamic Web Module;

Invece di cambiarlo:

a) deseleziona il Dynamic Web Module

b) applicare

c) ricontrollalo. Dovrebbe essere impostata la nuova versione 3.0. **

inserisci qui la descrizione dell'immagine

Dopo averlo applicato e ricontrollato:

inserisci qui la descrizione dell'immagine

Spero che questo ti aiuti.


15

Fare clic con il tasto destro del mouse sul progettoProprietà ; in Project Facet , deseleziona Dynamic Web Module (la versione dovrebbe essere 3.1 ) e deseleziona JavaServer Faces (la versione è 2.2 ).

Cambia questo:

<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 questa:

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

Quindi rimuovere il prefisso prima param-namee simili.

Infine, Maven -> Aggiorna progetto .


8

si prega di aprire la vista Navigator e il seguente passaggio

  1. (Finestra> Mostra vista> Altro> Generale) e scopri che c'è una cartella .settings sotto il tuo progetto, espanderla e quindi aprire il file "org.eclipse.wst.common.project.facet.core.xml", crea il sotto cambia e salva il file.
  2. Cambia la versione del modulo web dinamico in questa riga in 2.5 -
  3. Cambia la versione Java in questa riga in 1.5 o successiva -.

5
Hai dimenticato di dire quale vista selezionare nella cartella "Generale" nella finestra di dialogo "Mostra vista". È la vista "Navigatore"?
Roberto Linares,

6

Apri web.xml dalla struttura del progetto http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Applicazione Web Servlet 3.0

e aggiorna il file web.xml, ad esempio change version = "2.5"

Modificare anche il file org.eclipse.wst.common.project.facet.core.xml dal file .settings del progetto Seguire i passaggi 1. Finestra> Mostra vista> Altro> Generale> Navigatore

  1. C'è una cartella .settings nella directory del progetto

  2. Modificare la versione del modulo Web dinamico in questa riga su 2.5 4. Cambiare la versione Java in questa riga su 1.5 o successiva

Ora aggiorna il tuo progetto e inizia l'esecuzione sul tuo server.

Segui il blog per la soluzione http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

La soluzione è prodotta con illustrazioni di immagini


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Micha,

Ho apportato modifiche al file pom.xml come mostrato in crunchify.com/… . Tuttavia ciò non è bastato. Ho anche dovuto seguire la raccomandazione per aprire la cartella .settings e modificare il file or.eclipse.wst.common.project.facet.core.xml.
Blackjack,

6

I passaggi migliori e più semplici risolti per me questo problema sono 1) Proprietà -> Sfaccettature del progetto -> Deseleziona / deseleziona la casella di controllo del modulo Web dinamico -> Applica 2) Ora passa alla versione desiderata Applica 3) Seleziona la casella di controllo Modulo web dinamico .. - Ora hai finito -


1
Ha funzionato bene, ma qual è la conseguenza di questo?
sg28,

4

C'è un altro modo per risolvere questo problema (dai un'occhiata spero che ti aiuterà a risolvere il problema)

PROBLEMA

Impossibile modificare la versione del modulo Web dinamico delle sfaccettature del progetto da 2.3 a 3.0

SOLUZIONE

  1. Vai alla posizione del progetto (es. D: / maven / todo)
  2. vai alla cartella .setting
  3. controlla questo file: org.eclipse.wst.common.project.facet.core.xml
  4. aprire il file e modificare la proprietà "jst.web" dalla 2.3 alla 3.0 e salvare
  5. Fare clic con il tasto destro del mouse sul progetto per aggiornare il progetto e aggiornare maven
  6. Fatto!!!....

3

Il trucco web.xml funziona perché ora stai esplicitamente dicendo a WTP che stai utilizzando quella versione servlet specifica, indipendentemente da ciò che il contenitore supporta.

Nel mio caso, sto usando la configurazione delle annotazioni all'interno di un progetto Maven e non ho un file web.xml. Si scopre che in assenza di web.xml, WTP esamina le dipendenze Maven per determinare quale versione di Servlet utilizzare. Nel mio caso, avevo definito quanto segue:

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

Modificandolo su 6.0, il problema è stato risolto e ora utilizza Servlet 3.0 anziché 3.1, che è l'impostazione predefinita per JavaEE 7. Poiché sono dovuto passare da Tomcat 8 a Tomcat 7, Tomcat 7 supporta solo il profilo Web JavaEE 6. Ora le cose funzionano meravigliosamente.


3

Ho avuto lo stesso problema, la modifica di web.xml e la modifica del file nella cartella .settings da sola non mi hanno aiutato. La mia soluzione era quella di puntare direttamente il plug-in del compilatore maven per utilizzare la versione java desiderata modificando 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> 

Ora esegui Maven-> Aggiorna progetto e successivamente puoi modificare la versione dei servlet in proprietà-> facce del progetto-> Versione del modulo Web dinamico o, come scritto in precedenza, modificando manualmente org.eclipse.wst.common.project.facet.core. XML nella cartella .settings del tuo progetto.


2

Nel mio caso web.xml è stato referenziato da un dtd. Dopo averlo cambiato in riferimento xsd come quello pubblicato da Sydney ha funzionato.


2

Ho avuto lo stesso problema, l'eliminazione della cartella .settings ha risolto il problema


1

La mia soluzione al problema che non mi ha permesso di cambiare la versione del modulo Dynamic Web Module di Eclipse (Mars) è stata:

  • Disabilita Maven Nature
  • Assicurarsi che gli spazi dei nomi web.xml puntino alla versione corretta
  • Riattiva Maven Nature
  • Maven »Aggiorna progetto (o premi Alt + F5)

1

Se la risposta di Sydney non aiuta ancora, prova di seguito. Dopo aver seguito la risposta di Sydney, vai a Proprietà> Sfaccettature progetti deseleziona Dynamic Web Module, quindi modifica la versione in modo che corrisponda al tuo web.config, quindi seleziona di nuovo. Applica> Salva quindi aggiornamento 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

Ho provato molte delle risposte qui, ma nessuna ha funzionato per me. Quindi ho trovato un articolo sul mio problema qui . Ho pensato di condividerlo anche qui.

Di seguito sono riportati i passaggi eseguiti in breve.

  1. Imposta il livello di conformità del compilatore.
  2. Aggiorna la sfaccettatura del progetto
  3. Aggiorna JRE installato dalle preferenze
  4. Aggiunta della configurazione in pom.xml per utilizzare java 1.7 e infine
  5. aggiornamento del progetto da Maven.

1

Per un progetto web eclipse maven, la modifica della versione del modulo web dinamico deve controllare tre posizioni. Se si utilizza eclipse e dopo aver verificato quanto segue: 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) percorso di compilazione eclipse e versione del compilatore 1.7

hai ancora un marcatore di errore in maven:

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

Quindi puoi: deselezionare il modulo web dinamico e ricontrollarlo. Penso che sia perché le impostazioni del file eclipse sono in qualche modo corrotte. Informazioni sul secondo suggerimento tomcat quale versione è una buona nota.


1

Ho ricevuto questo errore quando provo a convertire un progetto Java generale in progetto Maven .

Quello che ho fatto è stato determinare la versione del compilatore Java richiesta dal mio progetto. Per il mio progetto, la versione minima di Java è 1.8.

Abbassando la versione a qualcosa di inferiore al 1.8mio IDE inizierò a lamentarmi del fatto che non riconosce un gruppo di librerie importate, quindi determino la mia versione minima di Java come1.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

inserisci qui la descrizione dell'immagine

Ora assicurati che la versione del compilatore Java utilizzi la stessa versione di Java impostata in Facce di progetto.

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.

inserisci qui la descrizione dell'immagine

Dopo le modifiche, l'errore dovrebbe essere risolto. Se l'errore persiste, fare clic con il pulsante destro del mouse su progetto -> Maven -> Aggiorna progetto



0

Apri il file org.eclipse.wst.common.project.facet.core.xml e modifica la versione jst.web in 3.0. Aggiorna anche web.xml alla versione 3.0. Salva e aggiorna il progetto. Spero che questo ti aiuti. Sto usando Eclipse Juno


0

Questa è una variazione sulla risposta di pagurix, ma usando Eclipse Mars.

Cambia il tuo file web.xml in web.bak

Ignora gli errori, lo rigenereremo successivamente.

Vai nelle proprietà del progetto -> sfaccettature del progetto e imposta la versione del modulo Web dinamico su ciò che ti serve. Eclipse ora ti consente di salvare.

Ora fai clic destro sul progetto. Scegli Strumenti Java EE -> Genera stub descrittore di distribuzione.

Questo crea un nuovo web.xml con la versione richiesta.

Apri il nuovo web.xml e copia attraverso l'intestazione XML e il tag di apertura completo dell'app Web sul tuo web.bak originale, elimina il nuovo web.xml e rinomina web.bak di nuovo in web.xml.

Fatto.


0

Il mio era Web Module 3.0dentro web.xml, ma dentro properties>Dynamic Web ModuleEra acceso3.1

Ho cambiato il web.xmlin questo:

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

dopo questa modifica, fai: right click on project>Maven>Update Project...


0

Questo problema con la versione fare clic con il tasto destro del mouse sul progetto-> proprietà-> Facet del progetto-> fare clic con il tasto destro del mouse su Dynamic Web Module-> sbloccarlo-> deselezionare-> selezionare la versione 2.5-> Applica-> Aggiorna il dispositivo


0

Ho risolto il problema modificando web.xml con la versione corretta, le posizioni xsd e modificando org.eclipse.wst.common.project.facet.core.xml con la versione corretta e facendo l' aggiornamento maven .


0

aggiornamento maven ha funzionato per me

selezionare il progetto quindi premere ALT + F5 quindi selezionare il progetto fare clic su OK


0

Ho avuto lo stesso sintomo con una cura diversa. Stavo cercando di aggiornare la mia webapp JSF 2.2.4 / Spring 3.0 a JSF 2.3 per godermi i nuovi hook di websocket JSF e Eclipse (in realtà STS) non avrebbe collaborato. Nelle Facet di progetto di Eclipse, JSF 2.3 non è mai stato disponibile fino a quando non ho modificato direttamente il file org.eclipse.wst.common.project.facet.core.xml come indicato nelle risposte precedenti: il massimo sarebbe stato 2.2.

Ecco i cerchi che ho passato. Non so che tutti questi erano necessari perché fondamentalmente non capisco tutta questa configurazione.

In Eclipse ho spesso ricevuto un avvertimento spaventoso, "La modifica di un progetto sfaccettato quando non sono disponibili implementazioni di uno o più sfaccettature installate può potenzialmente comportare un progetto danneggiato. Sei sicuro di voler procedere?" Questo mi ha spinto a fare commit più frequenti ma non si è verificata corruzione.

  1. Aggiorna JDK da 1.7 a 1.8 in POM, compilatore Eclipse e facce del progetto Eclipse.
  2. Aggiorna le seguenti dipendenze Maven:

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

    ... per:

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

... e ...

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

... per:

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

Ho dovuto aggiornare le mie dichiarazioni dello spazio dei nomi web.xml da:

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

... per:

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

Ho dovuto aggiornare Project Facets -> Dynamic Web Module dalla 2.5 alla 3.0. Ho provato 3.1 ma ho riscontrato degli errori.

In questo processo ho spesso ricevuto l'errore nel titolo di questo post, "Impossibile modificare la versione del modulo Web dinamico del facet del progetto su 3.0" ed Eclipse ha rifiutato di compilare il progetto o di offrire JSF 2.3 nelle facce del progetto. Quando ho modificato il file org.eclipse.wst.common.project.facet.core.xml come indicato, gli errori sono scomparsi, Eclipse ha offerto JSF 2.3 in Project Facets e il progetto è stato compilato e funzionava perfettamente su Tomcat 9.0.8. Tuttavia, le facce del progetto hanno ancora avvertito "L'implementazione della versione 2.3 del facet del progetto jst.jsf non è stata trovata. La funzionalità sarà limitata." Sospetto che ciò significhi semplicemente che il completamento automatico e altri vantaggi di Eclipse non saranno disponibili perché non riesce a trovare l'implementazione di JSF 2.3 dichiarata nel mio POM.

Spero che questo aiuti qualcuno. Le ricerche di Google hanno prodotto solo questo post di Ali Bassam e indirettamente BalusC che ha aiutato.


0

Ho avuto lo stesso problema - ho appena rimosso il progetto dal mio spazio di lavoro, quindi ho ripulito i "file / cartelle eclipse, ad esempio: .project, .settings, ecc.) Quindi ho importato di nuovo il progetto maven, ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.