2008-09-16 5 views
56

(Eclipse 3.4, Ganymed)Eclipse - Wie kann ich ein 'Projekt Facet' von Tomcat 6 zu Tomcat 5.5 ändern?

Ich habe ein bestehendes Dynamic Web Application-Projekt in Eclipse. Als ich das Projekt erstellt habe, habe ich im Dropdown-Menü "Konfiguration" die Option "Standardkonfiguration für Apache Tomcat v6" angegeben.

Es ist ein Monat oder 2 auf der ganzen Linie, und ich möchte jetzt die Konfiguration zu Tomcat 'v5.5' ändern. (Dies wird die Version von Tomcat auf dem Produktionsserver sein.)

Ich habe die folgenden Schritte versucht (ohne Erfolg):

  • ich ausgewählt Targeted Runtimes unter dem Projekt Properties
    Die Tomcat v5.5 Option deaktiviert wurde und Die UI zeigte diese Nachricht an:
    If the runtime you want to select is not displayed or is disabled you may need to uninstall one or more of the currently installed project facets.
  • Ich klickte dann auf die Uninstall Facets... Verbindung.
    Unter der Registerkarte Runtimes wird nur Tomcat 6 angezeigt.
    Für Dynamic Web Module, wählte ich Version 2.4 anstelle von 2.5.
    Unter der Registerkarte Runtimes wird jetzt Tomcat 5.5 angezeigt.
    Allerdings zeigte die UI jetzt diese Meldung:
    Cannot change version of project facet Dynamic Web Module to 2.4.
    Die Finish Taste deaktiviert war - so kam ich in eine Sackgasse.

Ich kann erfolgreich ein neues Projekt mit einer Tomcat v5.5-Konfiguration erstellen. Aus irgendeinem Grund kann ich jedoch ein existierendes Projekt nicht herunterstufen.

Als Work-around erstellte ich ein neues Projekt und kopierte die Quelldateien aus dem alten Projekt. Nichtsdestoweniger war die Umgehung ziemlich schmerzhaft und etwas ungeschickt.

Kann mir jemand erklären, wie ich die Projektkonfiguration von 'Tomcat 6' auf 'Tomcat 5' herunterstufen kann? Oder vielleicht etwas Licht auf die Gründe dafür werfen?

Dank
Pete

Antwort

87

Diese Art ist Eclipse Hacking und Sie können in Schwierigkeiten dies zu tun bekommen, aber dies sollte funktionieren:

Öffnen Sie die Navigator-Ansicht und feststellen, dass es ein .settings Ordner unter Ihrem Projekt erweitern Sie es und öffnen Sie dann die Datei: org.eclipse.wst.common.project.facet.core.xml sollten Sie eine Zeile sehen, die besagt: <installed facet="jst.web" version="2.5"/> Ändern Sie das auf 2.4 und speichern.

Stellen Sie nur sicher, dass Ihr Projekt nichts speziell für 2.5 verwendet und Sie sollten gut sein.

Überprüfen Sie auch Ihre web.xml die richtige Konfiguration hat:

<web-app version="2.4" 
     xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
+1

Dank sein. Eigentlich habe ich deinen Hack ausprobiert, bevor ich die Frage gepostet habe - mit teilweise Erfolg. Als ich versuchte, das Projekt in Eclipse (unter Tomcat 5.5) auszuführen, bekam ich eine Reihe von Ausnahmen. Also habe ich Eclipse angezündet, um den Exception-Stack zu kopieren ... und es hat funktioniert! Irgendeine Idee, warum der Hack benötigt wird? – user13360

+0

Ehrfürchtig..Diese Antwort half mir bei der Lösung des Problems. – SRy

+0

+1! Dieser Hack funktioniert wirklich :-) – Badal

0

Leider scheint es ich keinen Kommentar ohne genug Rep so schreiben kann ...

Ich denke, es ist zu schwierig für Eclipse, sicher zu einem niedrigeren Standard zu degradieren, weil es nicht wirklich wissen kann, ob Sie etwas aus dem neueren Web-Standard verwendet haben. Wenn es Ihnen also erlaubt, das zu tun, könnte Ihr Programm in einer älteren Version fehlschlagen.

Sie können immer abwärtskompatibel, aber nicht vorwärtskompatibel sein.

+0

Mmm - ein bisschen seltsam (nicht zu erwähnen, nervig). Wie auch immer, vielen Dank für die Antwort. – user13360

+1

Sie können es nicht anders tun, entweder 2.4 -> 2.5: '( – scottyab

7

Dies kann alt sein, aber ich habe versucht und fand folgende in Eclipse Galilio.

Öffnen Sie die Navigator-Ansicht und finden Sie, dass es einen .settings-Ordner unter Ihrem Projekt gibt, erweitern Sie es und öffnen Sie die Datei: org.eclipse.wst.common.project.facet.core.Delete den Inhalt dieser Datei und Recht Klicken Sie auf das Projekt und klicken Sie auf Eigenschaften. Gehen Sie im Popup-Fenster zu Project Facats, dort können Sie auf Runtime-Registerkarten klicken und Ihr Projekt in die neue Facette konvertieren, die Sie möchten.

+1

) Ich habe das gleiche für mein Problem in ** Eclipse Juno ** getan und es funktionierte auch dort. Danke! – CatsAndCode

+0

Sie brauchen keine zu erstellen Dynamisches Web-Projekt, um den Trick zu machen, Eclipse Juno ermöglicht es uns, eine Facette hinzuzufügen Dann klicken Sie mit der rechten Maustaste auf Dynamic Web Module und ändern Sie die Version auf 2.5 Das erste OK kann Ihnen eine NullPointerException geben, bleiben Sie Clam und versuchen Sie es erneut. –

0

Sie können versuchen, die Facette zu deaktivieren, anwenden, den Wert der Facette ändern und überprüfen. Es funktioniert für mich in Eclipse Helios SR1.

Also der Hauptunterschied ist, dass ich es mit 'Dynamic Web Module' mache.

Ich hoffe, es funktioniert auch für Sie.

5

Wenn Sie Maven verwenden, beenden Sie Eclipse, geben Sie >mvn eclipse:eclipse -Dwtpversion=2.0 ein und starten Sie die Eclipse neu.

0

Ich sah das gleiche, dann änderte ich die Web-App-Version Wert in der web.xml. Dies könnte dies für Sie beheben.

-1

Wenn Sie Maven verwenden, können Sie die Eclipse-Einstellungen mit dem Maven Eclipse-Plugin erzeugen.

Für die jst.web Version berücksichtigt das Maven eclipse pluging die Abhängigkeiten des Projekts. Wenn Sie ein Servlet api Abhängigkeit definiert haben:

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>6.0.32</version> 
</dependency> 

Sie jst.web Parameter werden 6,0

<faceted-project> 
    ... 
    <installed facet="jst.web" version="6.0"/> 
    ... 
</faceted-project>