2013-10-29 4 views
41

Ich habe eine mavenized codebasierte konfigurierte Spring 3.2.4 Web App. Wenn ich die Anwendung mit Maven/pom.xml zuerst erstelle, habe ich einen Fehler bekommen, dass web.xml fehlt. zuerst habe ich versucht, eine leere web.xml zu erstellen. Dies war der Moment, in dem sich die Projektfacetten veränderten (und ich weiß nicht warum). Es wurde von Dynamic Web Module 3.0 auf 3.1 umgestellt, was irreversibel ist. Wie kann ich es wieder in Dynamic Web Modules 3.0 ändern ???Dynamic Web Modul 3.0 - 3.1

enter image description here

Zusätzlich kann ich die JAX-RS nicht entfernen. Der Versuch, diese es ergibt:

Failed while uninstalling JAX-RS (REST Web Services) 1.0. 
org.eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.eclipse.jst.j2ee.webapplication.WebApp 

Später fand ich heraus, dass ich durch Einfügen des nach Plugin in pom.xml die Maven kompilieren Fehler vermeiden:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
    </configuration> 
</plugin> 

Antwort

65

Ich hatte ähnliche Probleme in Eclipse und die nur so, wie es für mich zu beheben war

  • entfernen sie den Web-Modul
  • bewerben
  • die Version Modul ändern
  • das Modul hinzufügen
  • konfigurieren (Weitere Link verfügbar Konfiguration am unteren Rand des Dialog)

Wenden Sie einfach sicherstellen, dass Sie das Web-Modul konfiguriert werden, bevor es als Anwendung von Standardmäßig sucht es nach Ihren Web-Dateien in/WebContent/und das ist nicht die Maven-Projektstruktur.

EDIT:

Hier ist eine zweite Art und Weise sonst im Fall nichts

  • Beenden Eclipse hilft, in dem Dateisystem zu einem Projekt gehen, dann zu .settings Ordnern.
  • Öffnen Sie die org.eclipse.wst.common.project.facet.core.xml, Backup erstellen, und entfernen Sie den Web-Modul-Eintrag.
  • Sie können dort auch die Web-Modul-Version ändern, aber auch hier keine Garantien.
+0

Meinen Sie, das Dynamic Web Module in den Projektfacetten zu entfernen? Ich darf das nicht tun. Eclipse sagt, dass es nicht entfernt werden kann. –

+3

@ user233552 Nun, dann musst du es auf die harte Tour machen ... Beende die Eclipse, gehe zu deinem Projekt im Dateisystem, dann zu .settings forlder. Öffnen Sie die Datei org.eclipse.wst.common.project.facet.core.xml, und entfernen Sie den Webmoduleintrag. Erstellen Sie eine Sicherungskopie der Dateien, da dies wahrscheinlich zu Problemen führen kann. Sie können die Version dort auch ändern, ich bin nicht sicher, ob es funktioniert, aber ... – dimoniy

+0

danke @dimoniy vielen Dank – kasinavijay

56

Wenn Sie Version 3.1 verwenden möchten, müssen Sie das folgende Schema verwenden:

  • http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

Beachten Sie, dass 3.0 und 3.1 unterschiedlich sind: in 3.1 gibt es keine Sonne erwähnt, so einfach ändern 3_0.xsd zu 3_1.xsd wird nicht funktionieren.

Dies ist, wie es aussehen sollte:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> 

</web-app> 

Stellen Sie außerdem sicher, dass Sie in Ihrem pom.xml auf die neuesten Versionen sind abhängig.Das heißt,

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     ... 
    </configuration> 
</plugin> 

und

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

Schließlich sollten Sie mit Java 7 oder 8 kompilieren:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.3</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 
+2

Dies ist die eigentliche Lösung für ein sauberes Maven-Projekt (ohne diese .settings und anderen Eclipse-Quarks), die Leute mit Eclipse immer noch in der Lage sind, korrekt zu öffnen. Funktioniert auch mit javax: javaee-api-Abhängigkeit. –

+0

Die Web-App-Schemaverweise in meiner web.xml-Datei zu ändern (und Eclipse mitzuteilen, dass das Maven-Projekt aktualisiert werden soll), haben den Zweck erfüllt. – Chris

+2

Diese Antwort sollte als die richtige Lösung markiert werden, wie es ist. Sauber und gerade Maven basiert! –

9

Ich hatte das gleiche Problem und dieses Problem behoben org.eclipse bearbeite. wst.common.project.facet.core.xml.

In dieser Datei konnte ich die folgende Zeile

ändern
<installed facet="jst.web" version="3.1"/> 

zurück zu

<installed facet="jst.web" version="3.0"/> 

Das schien das Problem für mich zu beheben.

+0

hallo danke, es hat für mich funktioniert ... – Madhuri

+0

Du hast meinen Tag gerettet! Vielen Dank!! – Celtik

0

Ich öffnete das Projekt org.eclipse.wst.common.project.facet.core.xml und zuerst geändert dann entfernte Zeile mit Web-Modul-Tag. Gereinigtes Projekt und jedes Mal auf Tomcat gestartet, aber es lief immer noch nicht. Zurückgegebene Linie (wie war) und gereinigtes Projekt. Tomcat-Einstellungen in Eclipse geöffnet und das Projekt manuell zum Tomcat-Start hinzugefügt (Rechtsklick + Hinzufügen und Entfernen). Klicken Sie auf Projekt und ausgewählt auf Server ausführen .... und alles war in Ordnung.

3

Ich war auf Win7, Tomcat7 mit Maven-Pom-Setup auf Eclipse Mars mit Maven-Projekt aktiviert. Auf einem NICHT laufenden Server Ich musste nur 3,1 bis 3,0 auf diesem Bildschirm ändern: enter image description here

Für mich war es wichtig, dynamischer Web-Modul deaktiviert zu haben! Ändern Sie dann die Version und aktivieren Sie das Dynamic Web Module erneut.

1

In einem bestimmten Fall ist das Problem auf die maven-archetype-webapp zurückzuführen, die für eine dynamische Webanwendung freigegeben ist, facettiert mit der Version 2.5 (siehe die produzierte web.xml und die zugehörige xsd) und mit Eclipse verwandt ist . Wenn Sie versuchen, die Projektfacette in dynamic webapp> 2.5 zu ändern, ändert sich die src-Ordnerstruktur syntaktisch (die 2.5 unterscheidet sich von 3.1), aber nicht fisisch.

Aus diesem Grund werden Sie in einer Nullzeiger-Ausnahme konfrontiert, wenn Sie die Änderungen übernehmen.

Um es zu lösen, müssen Sie aus den Projektfacetten Konfiguration die Standardkonfiguration einstellen. Übernehmen Sie die Änderungen, dann gehen Sie in den Java-Build-Pfad, Sie müssen den Ordner/src entfernen und mindestens den Ordner/src/main/java erstellen (es ist auch erforderlich/src/main/resources und/src/test/java) konform) ändern Sie die gewünschte Konfiguration (3.0, 3.1) und wenden Sie sie an.

2

öffnen Eclipse-Projekteigenschaften, in Project Facets abzuwählen "Dynamic Web-Modul", ... Klicken Sie auf OK Maven -> Update Projekt

0

1) zu einem Projekt gehen und ".settings" Verzeichnis this one
finden 2) Öffnen Sie die Datei xml genannt:
org.eclipse.wst.common.project.facet.core.xml
3)

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

ändern jst.web Version 3.0 und Java-Version 1.7 oder 1.8 (Basis auf dem aktuellen mit jdk Version)

4) Ändern Sie Ihre web.xml Datei unter WEB-INF Verzeichnis finden Sie in diesem Artikel:
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
5) Zum pom.xml Datei und fügen Sie die folgenden Zeilen:

<build> 
    <finalName>YOUR_PROJECT_NAME</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> THIS IS YOUR USING JDK's VERSION 
       <target>1.8</target> SAME AS ABOVE 
      </configuration> 
     </plugin> 
    </plugins> 
</build>