Ich benutze Maven, um eine dynamische Webapp in Eclipse zu erstellen. Ich habe einige Ordner wie src/test/Java
und src/test/resources
hinzugefügt. Außerdem habe ich die Bibliothek in Java Build Path geändert, um JavaSE-1.7 zu erhalten. Bis hier ist alles in Ordnung.
Beim Versuch, das Facet Dynamic Web Module für Projekte zu ändern, ist ein Fehler aufgetreten. Ich hatte die Java Version 1.7 an derselben Stelle geändert. Und es hat mir immer noch gesagt, ich kann die Version des Dynamic Web Module von Project Facet nicht auf 3.0 ändern.
Ich habe alles geändert, was die Veränderung bewirken würde, denke ich.
Ich habe meinen web.xml
aktualisiert
<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>
und dann einfach Maven -> Projekt aktualisieren ...
Eine andere Möglichkeit besteht darin, die Projektfacetten-Konfigurationsdatei selbst zu bearbeiten: org.Eclipse.wst.common.project.facet.core.xml
Ändern Sie die Version des dynamischen Webmoduls in dieser Zeile in 3.0 - <installed facet="jst.web" version="2.5"/>
.
Und dann:
Sie finden diese Datei im Verzeichnis .settings
des Eclipse-Projekts.
Ich glaube, ich hatte das gleiche Problem wie du. Mein web.xml hatte Version 2.5, während das Projekt das dynamische Webmodul 2.3 (mit Rechtsklick auf Projekt-> Eigenschaften-> Projektfacetten->) hatte.
Obwohl ich versuchte, die Version von 2.3 auf 2.5 zu ändern, erlaubte Eclipse es nicht. Lösung: Ich habe das Häkchen unter der Überschrift Dynamisches Webmodul entfernt, ich habe gespeichert und ich hatte Update-Projekt. Automatisches Wiedererwachen geht in die Box mit der richtigen Version. Ich benutze Eclipse Kepler.
siehe auch die Kommentare von Jonathan unten, sehr nützlich.
Ich hatte das gleiche Problem und versuchte sogar, das Projekt zu entfernen und es erneut hinzuzufügen. Der Trick bestand darin, das Verzeichnis .settings
zu entfernen.
org.Eclipse.wst.common.project.facet.core.xml
-Datei öffnen
<?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>
Ändern Sie die Version wie folgt <installed facet="jst.web" version="3.1"/>
Genau das hat mir gut getan.
Löschen
.settings
.classpatch
.projejct
target
und importieren Sie das Maven-Projekt erneut.
Was für mich funktioniert hat:
In Ihrem POM - müssen Sie das Compiler-Plugin auf Version 1.8 (oder 1.7) im Abschnitt <build>
setzen:
<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>
Stellen Sie sicher, dass bei der Änderung von Java Build 1.8 angezeigt wird. Wenn nicht, klicken Sie auf BEARBEITEN und wählen Sie aus, was es sein soll.
Anstatt es zu ändern:
a) nicht markieren das Dynamic Web Module
b) anwenden
c) erneut prüfen. Neue Version 3.0 sollte eingestellt werden. **
Nach dem Auftragen und erneutem Überprüfen:
Hoffe das hilft.
Klicken Sie mit der rechten Maustaste auf das Projekt → Eigenschaften; Deaktivieren Sie in Projektfacetten die Option Dynamic Web Module (Version sollte 3.1) und die Auswahl JavaServer Faces (Version ist 2.2).
Ändere das:
<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">
zu diesem:
<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">
Entfernen Sie dann das Präfix vor param-name
und dergleichen.
Schließlich Maven -> Projekt aktualisieren.
Öffnen Sie bitte die Navigatoransicht und den folgenden Schritt
Öffnen Sie web.xml über die Projektstruktur Http: //Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd " Version =" 3.0 "> Servlet 3.0-Webanwendung
und aktualisieren Sie die web.xml-Datei Ändern Sie zum Beispiel version = "2.5".
Ändern Sie auch die Datei org.Eclipse.wst.common.project.facet.core.xml aus der Projekteinstellungsdatei Führen Sie die Schritte 1 aus. Fenster> Ansicht anzeigen> Andere> Allgemein> Navigator
In Ihrem Projektverzeichnis befindet sich ein Ordner .settings
Ändern Sie die Version des dynamischen Webmoduls in dieser Zeile in 2.5 4.Ändern Sie die Java-Version in dieser Zeile in 1.5 oder höher
Aktualisieren Sie nun Ihr Projekt und starten Sie die Ausführung auf Ihrem Server.
Folgen Sie dem Blog für die Lösung http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-Eclipse.html
Die Lösung wird mit Bildillustrationen erstellt
Die besten und einfachsten Schritte zur Lösung dieses Problems lauten: __. 1) Eigenschaften -> Projektfacetten -> Deaktivieren/deaktivieren Sie das Kontrollkästchen Dynamic Web Module -> Apply 2) Wechseln Sie nun zur gewünschten Version. Übernehmen 3) Aktivieren Sie das Kontrollkästchen Dynamic Web Module. Jetzt werden Sie done -
Dies ist eine weitere Möglichkeit, um dieses Problem zu lösen (überprüfen Sie es in der Hoffnung, dass es Ihnen helfen wird, Ihr Problem zu lösen)
PROBLEM
Die Version des dynamischen Webmoduls 2.3 von Project Facet kann nicht auf 3.0 geändert werden
L&OUML;SUNG
Ich hatte das gleiche Problem, die Bearbeitung von web.xml sowie das Ändern der Datei im .settings-Ordner allein hat nicht geholfen. Meine Lösung bestand darin, direkt auf das Maven-Compiler-Plugin zu zeigen, um die gewünschte Java-Version durch Bearbeiten von pom.xml zu verwenden:
<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>
Führen Sie nun Maven-> Update-Projekt aus. Danach können Sie die Servlet-Version in Eigenschaften-> Projektfacetten-> Dynamische Webmodul-Version oder, wie zuvor geschrieben, durch manuelle Bearbeitung von org.Eclipse.wst.common.project.facet.core ändern. xml im .settings-Ordner Ihres Projekts.
Der web.xml-Trick funktioniert, weil Sie WTP jetzt explizit mitteilen, dass Sie diese bestimmte Servlet-Version verwenden, unabhängig davon, was der Container unterstützt.
In meinem Fall verwende ich die Annotation config in einem Maven-Projekt und habe keine web.xml-Datei. Es stellt sich heraus, dass WTP in Abwesenheit einer web.xml Ihre Maven-Abhängigkeiten untersucht, um festzustellen, welche Servlet-Version verwendet werden soll. In meinem Fall hatte ich Folgendes definiert:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
Durch das Ändern auf 6.0 wurde das Problem behoben. Jetzt wird Servlet 3.0 anstelle von 3.1 verwendet. Dies ist der Standard für JavaEE 7. Da ich von Tomcat 8 auf Tomcat 7 wechseln musste, unterstützt Tomcat 7 nur das JavaEE 6-Webprofil. Jetzt funktionieren die Dinge wunderbar.
Ich hatte das gleiche Problem, das Löschen des Ordners .settings löste das Problem
In meinem Fall wurde die web.xml von einem dtd referenziert. Nachdem ich diese in xsd-Referenz wie die von Sydney gepostete geändert hatte, funktionierte es.
Wenn die Antwort von Sydney immer noch nicht hilft, versuchen Sie es unten. Wenn Sie der Antwort von Sydney gefolgt sind, deaktivieren Sie Eigenschaften> Projekte Facets die Option Dynamic Web Module, ändern Sie die Version entsprechend Ihrer web.config und wählen Sie sie erneut aus. Übernehmen> Speichern .__ Dann Maven Update.
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>
Meine Lösung für das Problem, die es mir nicht ermöglichte, die Version des Dynamic Web Modules für Projektfacetten in Eclipse (Mars) zu ändern, war:
Ich habe viele der Antworten hier ausprobiert, aber keine davon funktionierte für mich ... Dann fand ich einen Artikel über mein Problem hier . Ich dachte daran, es auch hier zu teilen.
Nachfolgend sind die Schritte in Kürze aufgeführt.
Bei einem Eclipse-Webprojekt für ein Maven müssen für die Änderung der Version des dynamischen Webmoduls drei Stellen geprüft werden. Wenn Sie Eclipse verwenden, und nachdem Sie Folgendes überprüft haben: 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) Eclipse-Erstellungspfad und Compiler-Version ist 1.7
bei maven hast du noch eine fehlermarke:
cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied
Dann können Sie: Das dynamische Webmodul deaktivieren und erneut prüfen . Ich denke, es liegt daran, dass .settings der Eclipse-Datei irgendwie beschädigt sind. Über den zweiten Tipp Tomcat welche Version ist ein guter Hinweis.
Ich hatte das gleiche Problem - ich habe das Projekt gerade aus meinem Arbeitsbereich entfernt, dann die "Eclipse-Dateien/-Ordner bereinigt, z.
Öffnen Sie die Datei org.Eclipse.wst.common.project.facet.core.xml und ändern Sie die Version jst.web auf 3.0. Aktualisieren Sie auch die web.xml auf Version 3.0. Speichern und aktualisieren Sie das Projekt. Hoffe das hilft. Ich benutze Eclipse Juno
Die Aktualisierung des Projekts durch Maven oder das erneute Importieren des Projekts hat nicht geholfen. @ Sydneys Antwort ist richtig; Außerdem muss ich das Projekt in einem anderen Arbeitsbereich neu erstellen, wie in JavaServer Faces 2.2 Dynamic Web Module 2.5 oder neuer
Mein war Web Module 3.0
in web.xml
, aber in properties>Dynamic Web Module
war es auf 3.1
Ich habe den web.xml
folgendermaßen geändert:
<?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">
führen Sie nach dieser Änderung Folgendes aus: right click on project>Maven>Update Project...
Ich hatte das gleiche Symptom mit einer anderen Heilung. Ich habe versucht, meine JSF 2.2.4/Spring 3.0 webapp auf JSF 2.3 zu aktualisieren, um die neuen JSF-Websocket-Hooks dort zu genießen, und Eclipse (eigentlich STS) würde nicht kooperieren. In Eclipse's Project Facets war JSF 2.3 erst verfügbar, nachdem ich die Datei org.Eclipse.wst.common.project.facet.core.xml wie in den vorherigen Antworten beschrieben direkt bearbeitet hatte - der höchste Wert war 2.2.
Hier sind die Reifen, durch die ich gesprungen bin. Ich weiß nicht, dass all das notwendig war, weil ich diese Konfiguration grundsätzlich nicht verstehe.
In Eclipse erhielt ich häufig eine beängstigende Warnung: "Das Ändern eines facettierten Projekts, wenn Implementierungen einer oder mehrerer installierter Facetten nicht verfügbar sind, kann möglicherweise zu einem beschädigten Projekt führen. Möchten Sie wirklich fortfahren?" Dies veranlasste mich zu häufigeren Commits, es trat jedoch keine Korruption auf.
Aktualisieren Sie die folgenden Maven-Abhängigkeiten:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
... bis:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
... und ...
<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>
... bis:
<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>
Ich musste meine web.xml-Namespace-Deklarationen aktualisieren von:
<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">
... bis:
<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">
Ich musste Project Facets -> Dynamic Web Module von 2.5 auf 3.0 aktualisieren. Ich habe 3.1 probiert, habe aber Fehler bekommen.
In diesem Prozess bekam ich häufig den Fehler im Titel dieses Beitrags: "Version des Dynamic Web Module von Project Facet kann nicht auf 3.0 geändert werden", und Eclipse lehnte es ab, das Projekt zu kompilieren oder JSF 2.3 in den Project Facets anzubieten. Als ich die Datei org.Eclipse.wst.common.project.facet.core.xml so bearbeitet hatte, dass die Fehler verschwunden waren, bot Eclipse JSF 2.3 in Project Facets an, und das Projekt wurde unter Tomcat 9.0.8 kompiliert und ausgeführt. Project Facets warnte jedoch immer noch: "Die Implementierung von Version 2.3 des Projekts facet jst.jsf konnte nicht gefunden werden. Die Funktionalität wird eingeschränkt." Ich vermute, dies bedeutet einfach, dass Autocomplete und andere Eclipse-Funktionen nicht verfügbar sind, da die in meinem POM deklarierte JSF 2.3-Implementierung nicht gefunden wird.
Hoffe das hilft jemandem. Die Google-Suche ergab nur diesen Beitrag von ALi Bassam und indirekt BalusC, was dazu beitrug.
update maven arbeitete für mich
wählen Sie ein Projekt aus und drücken Sie ALT + F5
Ich habe diese Fehlermeldung erhalten, wenn ich versuche, ein allgemeines Java-Projekt in ein Maven-Projekt zu konvertieren.
Was ich getan habe, war die Java Compiler-Version zu bestimmen, die von meinem Projekt benötigt wird. Für mein Projekt ist die Mindestversion von Java 1.8
.
Durch Verringern der Version auf einen niedrigeren Wert als 1.8
beschwert sich mein IDE, dass eine Reihe von importierten Bibliotheken nicht erkannt werden. Daher bestimme ich meine minimale Java Version als 1.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
Stellen Sie nun sicher, dass die Compilerversion Java dieselbe Version Java verwendet, die Sie in Project Facets festgelegt haben.
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.
Nach den Änderungen sollte der Fehler behoben sein. Wenn der Fehler weiterhin besteht, klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Projekt aktualisieren
Dies ist eine Variation der Antwort von Pagurix, jedoch mit Eclipse Mars.
Ändern Sie Ihre web.xml-Datei in web.bak
Ignorieren Sie die Fehler, wir werden es als nächstes regenerieren.
Gehen Sie in die Projekteigenschaften -> Projektfacetten und stellen Sie die Version des Dynamic Web Module auf das, was Sie benötigen. Mit Eclipse können Sie jetzt speichern.
Klicken Sie nun mit der rechten Maustaste auf das Projekt. Wählen Sie Java EE Tools -> Deployment Descriptor Stub generieren.
Dadurch wird eine neue web.xml mit der erforderlichen Version erstellt.
Öffnen Sie die neue Datei web.xml und kopieren Sie sie über den XML-Header und den vollständigen Tag zum Öffnen der Web-App in Ihr ursprüngliches web.bak, löschen Sie die neue web.xml und benennen Sie web.bak in web.xml um.
Erledigt.
Ich habe das Problem gelöst, indem ich modifiziere web.xml mit der korrekten Version, xsd-Speicherorten und modifiziere org.Eclipse.wst.common.project.facet.core.xml mit der richtigen Version und mache maven update .
Dieses Problem Bei der Version klicken Sie mit der rechten Maustaste auf das Projekt -> Eigenschaften -> Projektfacetten -> Klicken Sie mit der rechten Maustaste auf Dynamic Web Module -> Entsperren Sie es -> Deaktivieren Sie die Option -> Version 2.5 auswählen -> Übernehmen -> Aktualisieren Sie den Ordner