Não é possível alterar a versão da faceta do projeto Dynamic Web Module para 3.0?

329

Estou usando o maven para criar um webapp dinâmico no Eclipse. Eu adicionei algumas pastas como src/test/javae src/test/resources. Também mudei a biblioteca no Java Build Path para obter o JavaSE-1.7. Está tudo bem até aqui.

Quando tentei alterar o módulo da Web dinâmica de projetos da faceta, algo deu errado. Eu mudei o Java para 1.7 no mesmo lugar. E ainda me disse que não é possível alterar a versão da faceta do projeto Dynamic Web Module para 3.0.

Eu mudei tudo que afetaria a mudança que eu penso.

EdgarZeng
fonte
ESTÁ BEM. Me desculpe sobre isso. O arquétipo é maven-archetype-webapp quando crio o New Maven Project, e o Dynamic Web Module é 2.3 nas Facetas do projeto após a criação do projeto. Eu quero mudar a versão do módulo Dynamic Web para 3,0, e eu tenho 'Não é possível alterar a versão de faceta projeto do módulo Dynamic Web para 3,0'
EdgarZeng
Isso funcionou para mim: stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
Titi Wangsa Bin Damhore
No Eclipse Kepler, quando clico com o botão direito do mouse na faceta 'Dynamic Web Module', ele exibe a opção 'Unlock'. Após o desbloqueio, pude alterar a versão da faceta. apenas para informação.
Jonathan
Isso é um bug para o eclipse?
CDT

Respostas:

311

Eu atualizei meu 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 depois apenas Maven -> Atualizar projeto ...

Sydney
fonte
64
A atualização do web.xml não funcionou para mim. A solução dada pela @enkor funciona: stackoverflow.com/a/18632054/378633
jplandrain
5
Aqui está um cabeçalho válido para um arquivo 3.1 web.xml <? Xml version = "1.0" encoding = "UTF-8"?> < Xmlns de aplicativos da web: 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
e os projetos sem o web.xml? :)
Anand Rockzz
a mudança de versão de atributo para 3.0 não funcionou para mim também
tequilacat
Se nenhuma das soluções acima e abaixo, se não funcionar, passar por esse link 100%, funcionará.
Raki
587

Outra maneira é editar o próprio arquivo de configuração da faceta do projeto: org.eclipse.wst.common.project.facet.core.xml

Altere a versão do módulo da web dinâmico nesta linha para 3.0 - <installed facet="jst.web" version="2.5"/>

E depois:

  1. Clique com o botão direito do mouse no projeto (no painel Explorador de Projetos ).
  2. Selecione Maven »Atualizar projeto (ou pressione Alt+F5)

Você encontrará esse arquivo no .settingsdiretório dentro do projeto Eclipse.

enkor
fonte
3
Obrigado. Na verdade, acho que devemos fazer outra coisa, como a anterior, alterar a versão do módulo da web no web.xml; caso contrário, a versão do 'Deployment Descriptor' não será alterada para 3.0. E isso é um bug no plugin maven?
EdgarZeng 08/09
13
Essa parece ser a única maneira de resolver esse problema quando você estiver sem um web.xml em seu projeto.
Shawn Sherwood
3
Eu já tinha o 3.0 no web.xml e o STS ainda não conseguiu atualizar e o mvn update também não ajudou. Este método funciona, no entanto.
MiB
2
Isso ajudou, na verdade, vá para -> org.eclipse.wst.common.project.facet.core.xml -> remover todas as entradas -> projeto de atualização do maven.
virtuvious 17/08/2015
7
Você pode encontrar o arquivo org.eclipse.wst.common.project.facet.core.xml na pasta .settings do aplicativo / projeto.
Rushi Shah
175

Eu acho que tive o mesmo problema que você. Meu web.xml possuía a versão 2.5, enquanto o projeto tinha (clique com o botão direito do mouse em Projeto-> Propriedades-> Facetas do projeto->) Dynamic Web Module 2.3.

Embora eu tenha tentado alterar a versão de 2.3 para 2.5, o ECLIPSE não permitiu. Solução: removi a marca de seleção sob o título Dynamic Web Module, salvei e tive o Update Project. O novo despertar automático está entrando na caixa com a versão correta. Eu uso o Eclipse Kepler.

ps: veja os comentários de Jonathan logo abaixo, muito úteis.

pagurix
fonte
1
Ótimo! Resolveu meu problema, mas você pode me dizer por que não estava permitindo inicialmente definir o módulo dinâmico?
Suresh
26
@ Suresh, acho que o problema por que não estava permitindo alterar a versão é porque está bloqueado. Se você clicar com o botão direito do mouse na faceta 'Dynamic Web Module', será exibida a opção 'Unlock'. Depois de desbloquear, desmarcar a faceta DWM, reaplicar a faceta e atualizar o projeto, o erro desapareceu.
Jonathan
2
+1. Sem esse ponto extremamente importante, outras respostas aqui são inúteis. Só acho que o comentário de Jonathan não deve ser incluído na resposta.
Gangnus
1
+1 @Jonathan Sua dica fez o trabalho. Você deve publicá-lo como resposta e também devemos elevar isso ao Eclipse!
aksappy
No meu caso isso funciona porque no pom módulo web não foi setado outra versão para o módulo web Dnamic, então isso whit do projeto de configuração de conflitos
ocrampico
49
  1. Clique na pasta do seu projeto.
  2. Vá para Janela> Mostrar Visualização> Navegador
  3. Vá para o Navegador e expanda a pasta .settings
  4. Abrir org.eclipse.wst.common.project.facet.core.xmlarquivo

    <?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. Mude a versão assim <installed facet="jst.web" version="3.1"/>

  6. Salve 
  7. Basta atualizar seu projeto. Clique com o botão direito do mouse na pasta Projeto> Maven> Atualizar projeto> Selecione o projeto e clique em 'Ok'

Apenas isso funcionou para mim.

aabarbosa
fonte
43

Eu tive o mesmo problema e tentei remover o projeto e adicioná-lo novamente. O que fez o truque foi remover o .settingsdiretório.

Adrian Ber
fonte
2
Eu também tive que fazer isso. Eu estava usando um projeto da web do Spring com uma configuração baseada em Java, portanto, a atualização do web.xml não era possível para mim.
precisa
Por que ele trabalhou depois de eliminar o .O ajuste você pode por favor exaplain
Abhijit Chakra
Esse diretório .settings contém muitas coisas e talvez algumas delas tenham mudado ao longo do tempo. Não sei exatamente qual parte influenciou esse comportamento, mas isso foi como uma redefinição. Nenhuma das outras respostas funcionou para mim, mas esta. E parece que eu não era o único nessa situação.
Adrian Ber
Funcionou para mim, tive este erro: "Não é possível alterar a versão do EAR da faceta do projeto para 1,3".
Giovanni P.
Trabalhou para mim! Eu tive o erro: "Não é possível alterar a versão da faceta do projeto Dynamic Web Module para 3.0"
Anup Ghosh
24

Excluir

.settings 
.classpatch 
.projejct 
target

e importe novamente o projeto maven.

Pintér Tamás
fonte
Como importo novamente o Projeto Maven. Eu sou novo nisso.
precisa
21

O que funcionou para mim:

  1. Mude o Java para 1.8 (ou 1.7)

No seu POM - você precisa definir o plug-in do compilador para a versão 1.8 (ou 1.7) na <build>seção:

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

Assegure-se de que a alteração Java Build mostre 1.8. Caso contrário, clique em EDITAR e selecione o que deve ser.

insira a descrição da imagem aqui

  1. Modifique web.xml para que 3.0 seja referenciado na versão e no link

insira a descrição da imagem aqui

  1. Verifique se o Java está definido como 1,8 nas Facetas do projeto

insira a descrição da imagem aqui

  1. Nesta fase, ainda não consegui mudar o Dynamic Web Module;

Em vez de alterá-lo:

a) desmarque o Dynamic Web Module

b) aplicar

c) verifique novamente. Nova versão 3.0 deve ser definida. **

insira a descrição da imagem aqui

Após aplicar e verificar novamente:

insira a descrição da imagem aqui

Espero que isto ajude.

Witold Kaczurba
fonte
15

Clique com o botão direito do mouse no projetoPropriedades ; no Project Facets , desmarque Dynamic Web Module (a versão deve ser 3.1 ) e desmarque o JavaServer Faces (a versão é 2.2 ).

Mude isso:

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

para isso:

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

Em seguida, remova o prefixo antes param-namee assim por diante .

Finalmente, Maven -> Atualizar projeto .

Henry Ren
fonte
8

abra a visualização Navegador e a etapa seguinte

  1. (Janela> Mostrar modo de exibição> Outros> Geral) e verifique se há uma pasta .settings no seu projeto, expanda-a e abra o arquivo "org.eclipse.wst.common.project.facet.core.xml", faça o abaixo das alterações e salve o arquivo.
  2. Altere a versão do módulo da web dinâmico nesta linha para 2.5 -
  3. Altere a versão Java nesta linha para 1.5 ou superior -.
GAURAV KUMAR GUPTA
fonte
5
Você esqueceu de dizer qual visualização deve selecionar na pasta "Geral" na caixa de diálogo "Mostrar visualização". É a visualização "Navegador"?
Roberto Linares
6

Abra web.xml da estrutura do projeto http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Aplicativo da Web Servlet 3.0

e atualize o arquivo web.xml, por exemplo, change version = "2.5"

Altere também o arquivo org.eclipse.wst.common.project.facet.core.xml do arquivo .settings do projeto Siga as etapas 1. Janela> Mostrar modo de exibição> Outros> Geral> Navegador

  1. Há uma pasta .settings no diretório do seu projeto

  2. Altere a versão do módulo da web dinâmico nesta linha para 2.5 4. Altere a versão Java nesta linha para 1.5 ou superior

Agora atualize seu projeto e prepare-se para executar no seu servidor.

Siga o blog da solução http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

A solução é produzida com ilustrações de imagens

Siddaram
fonte
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada.
Micha
Fiz alterações no arquivo pom.xml, como mostrado em crunchify.com/… . No entanto, isso não foi suficiente. Também tive que seguir a recomendação para abrir a pasta .settings e editar o arquivo or.eclipse.wst.common.project.facet.core.xml.
blackjack
6

As melhores e mais simples etapas para esse problema: 1) Propriedades -> Facetas do projeto -> Desmarque / desmarque a caixa de seleção Dynamic Web Module -> Apply 2) Agora mude para a versão desejada Apply 3) Marque a caixa de seleção Dynamic web Module .. - Agora você está pronto -

ensolarado
fonte
1
Funcionou bem, mas Qual é a conseqüência disso?
sg28
4

É mais uma maneira de resolver esse problema (confira, espero que ajude a resolver seu problema)

PROBLEMA

Não é possível alterar a versão do módulo da Web dinâmico da faceta do projeto 2.3 para 3.0

SOLUÇÃO

  1. Vá para o local do seu projeto (ex.-D: / maven / todo)
  2. vá para a pasta .setting
  3. verifique esse arquivo: org.eclipse.wst.common.project.facet.core.xml
  4. abra o arquivo e altere a propriedade "jst.web" de 2.3 para 3.0 e salve
  5. Clique com o botão direito do mouse no projeto, atualize o projeto e atualize o maven
  6. Feito!!!....
chhaya Joshi
fonte
3

O truque web.xml funciona porque agora você está dizendo explicitamente ao WTP que está usando essa versão específica do servlet, independentemente do suporte do contêiner.

No meu caso, estou usando a configuração de anotação em um projeto Maven e não tenho um arquivo web.xml. Acontece que, na ausência de um web.xml, o WTP examina as dependências do Maven para determinar qual versão do Servlet usar. No meu caso, eu havia definido o seguinte:

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

Mudá-lo para 6.0 corrigiu o problema e agora está usando o Servlet 3.0 em vez de 3.1, que é o padrão para o JavaEE 7. Como eu tive que ir do Tomcat 8 para o Tomcat 7, o Tomcat 7 suporta apenas o perfil da Web do JavaEE 6. Agora as coisas funcionam maravilhosamente.

Ryan J. McDonough
fonte
3

Eu tive o mesmo problema, editar o web.xml e alterar o arquivo na pasta .settings sozinho não ajudou. Minha solução foi apontar diretamente o plug-in do compilador maven para usar a versão java desejada, editando o 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> 

Agora execute Maven-> Atualizar projeto e, depois disso, você pode alterar a versão dos servlets em propriedades-> facetas do projeto-> versão do módulo Dynamic Web ou, conforme escrito anteriormente, editando manualmente org.eclipse.wst.common.project.facet.core. xml na pasta .settings do seu projeto.

Troy
fonte
2

No meu caso, o web.xml foi referenciado por um dtd. Depois que eu mudei isso para a referência xsd como a postada por Sydney, funcionou.

keiki
fonte
2

Eu tive o mesmo problema, excluir a pasta .settings resolveu o problema

Nagababu
fonte
1

Minha solução para o problema que não me permitiu alterar a versão da faceta do projeto Dynamic Web Module no Eclipse (Mars) foi:

  • Desativar Maven Nature
  • Verifique se os namespaces web.xml apontam para a versão correta
  • Reativar o Maven Nature
  • Maven »Atualizar projeto (ou pressione Alt + F5)
Endereço.
fonte
1

Se a resposta de Sydney ainda não ajudar, tente abaixo. Depois de seguir a resposta de Sydney, vá para Propriedades> Facetas de projetos desmarque Dynamic Web Module e altere a versão para corresponder ao seu web.config e, em seguida, selecione novamente. Aplicar> Salvar e atualização do 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
fonte
1

Tentei muitas das respostas aqui, mas nenhuma delas funcionou para mim. Então eu encontrei um artigo sobre o meu problema aqui . Eu pensei em compartilhá-lo aqui também.

Abaixo estão os passos dados em breve.

  1. Defina o nível de conformidade do compilador.
  2. Atualizar faceta do projeto
  3. Atualizar o JRE instalado a partir de preferências
  4. Adicionando configuração no pom.xml para usar o java 1.7 e finalmente
  5. projeto de atualização do Maven.
Md Faisal
fonte
1

Para um projeto da web do maven eclipse, a alteração da versão do módulo da web dinâmica precisa verificar três locais. Se alguém usar o eclipse e depois de verificar o seguinte: 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) caminho de construção do eclipse e a versão do compilador é 1.7

você ainda tem um marcador de erro no maven:

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

Em seguida, você pode: desmarcar o módulo dinâmico da web e verificar novamente. Eu acho que é porque as configurações do arquivo eclipse estão corrompidas de alguma forma. Sobre a segunda dica do tomcat, qual versão é uma boa nota.

Tiina
fonte
1

Eu recebi esse erro ao tentar converter um projeto Java geral para o projeto Maven .

O que fiz foi determinar a versão do compilador Java que é requerida pelo meu projeto. Para o meu projeto, a versão Java mínima é1.8 .

Ao abaixar a versão para algo menor que o 1.8meu IDE, você começará a reclamar que não reconhece um monte de bibliotecas importadas; portanto, eu determino a minha versão Java mínima 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

insira a descrição da imagem aqui

Agora verifique se a versão do compilador Java usa a mesma versão Java que você definiu nas Facetas do projeto.

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.

insira a descrição da imagem aqui

Após as alterações, o erro deve ser resolvido. Se o erro persistir, clique com o botão direito do mouse em projeto -> Maven -> Atualizar projeto

user3437460
fonte
0

Abra o arquivo org.eclipse.wst.common.project.facet.core.xml e altere a versão do jst.web para 3.0. Atualize também o web.xml para a versão 3.0. Salve e atualize o projeto. Espero que isto ajude. Estou usando o Eclipse Juno

Sheetal
fonte
0

Esta é uma variação da resposta do pagurix, mas usando o Eclipse Mars.

Altere seu arquivo web.xml para web.bak

Ignore os erros, vamos regenerá-lo a seguir.

Acesse as propriedades do projeto -> facetas do projeto e defina a versão do Dynamic Web Module para o que você precisa. Agora, o Eclipse permite que você salve.

Agora clique com o botão direito do mouse no projeto. Escolha Java EE Tools -> Gerar Stub do Descritor de Implementação.

Isso cria um novo web.xml com a versão necessária.

Abra o novo web.xml e copie o cabeçalho XML e a tag de abertura completa do aplicativo da web para o seu web.bak original, exclua o novo web.xml e renomeie o web.bak de volta para web.xml.

Feito.

Adão
fonte
0

O meu estava Web Module 3.0dentro web.xml, mas no properties>Dynamic Web Moduleestava ligado3.1

Eu mudei o web.xmlpara isso:

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

após essa alteração, faça: right click on project>Maven>Update Project...

Amin Sh
fonte
0

This Problem With version clique com o botão direito do mouse em projeto-> propriedades-> Project Facets-> clique com o botão direito do mouse em Dynamic Web Module-> desbloqueie-> desmarque-> selecione a versão 2.5-> Aplicar-> Atualize o maven

Gen
fonte
0

Resolvi o problema modificando o web.xml com a versão correta, os locais xsd e modificando o org.eclipse.wst.common.project.facet.core.xml com a versão correta e atualizando o maven .

Vaibs
fonte
0

atualizar maven trabalhou para mim

selecione o projeto, pressione ALT + F5 e selecione o projeto, clique em ok

Hari
fonte
0

Eu tive o mesmo sintoma com uma cura diferente. Eu estava tentando atualizar meu webapp JSF 2.2.4 / Spring 3.0 para JSF 2.3, a fim de aproveitar os novos ganchos de soquete web JSF lá e o Eclipse (na verdade STS) não cooperaria. No Project Facets do Eclipse, o JSF 2.3 nunca se tornou disponível até que eu editei diretamente o arquivo org.eclipse.wst.common.project.facet.core.xml, conforme indicado nas respostas anteriores - o valor mais alto seria 2,2.

Aqui estão os aros pelos quais eu pulei. Não sei se tudo isso foi necessário porque fundamentalmente não entendo toda essa configuração.

No Eclipse, recebia frequentemente um aviso assustador: "Modificar um projeto facetado quando implementações de uma ou mais facetas instaladas não estão disponíveis pode resultar em um projeto corrompido. Tem certeza de que deseja continuar?" Isso me levou a fazer confirmações mais frequentes, mas nenhuma corrupção ocorreu.

  1. Atualize o JDK de 1,7 para 1,8 no POM, no compilador Eclipse e nas facetas do projeto Eclipse.
  2. Atualize as seguintes dependências do Maven:

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

    ... para:

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

... para:

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

Eu tive que atualizar minhas declarações de namespace web.xml de:

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

... para:

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

Eu tive que atualizar as facetas do projeto -> Dynamic Web Module de 2.5 para 3.0. Eu tentei 3.1, mas obtive erros.

Nesse processo, frequentemente recebi o erro no título desta postagem, "Não é possível alterar a versão da faceta do projeto Dynamic Web Module para 3.0" e o Eclipse se recusou a compilar o projeto ou oferecer o JSF 2.3 nas facetas do projeto. Quando editei o arquivo org.eclipse.wst.common.project.facet.core.xml conforme os erros desapareceram, o Eclipse ofereceu o JSF 2.3 no Project Facets e o projeto compilou e executou bem no Tomcat 9.0.8. No entanto, as Facetas do projeto ainda avisavam "Não foi possível encontrar a implementação da versão 2.3 da faceta do projeto jst.jf. A funcionalidade será limitada." Eu suspeito que isso significa simplesmente que o preenchimento automático e outras conveniências do Eclipse não estarão disponíveis porque não pode encontrar a implementação do JSF 2.3 declarada no meu POM.

Espero que isso ajude alguém. As pesquisas do Google renderam apenas este post de Ali Bassam e indiretamente BalusC, que ajudou.

snakedog
fonte
0

Eu tive o mesmo problema - acabei de remover o projeto do meu espaço de trabalho, depois limpei os "arquivos / pastas eclipse, por exemplo: .project, .settings, etc) e depois importei o projeto maven novamente, ele funcionou.

Thomás Preis
fonte