4 Stimmen

Eclipse: Fehler beim Starten von statischen Ressourcen java.lang.IllegalArgumentException

Ich habe ein Projekt namens myproject2 in meiner Eclipse-IDE. Ich habe einen Tomcat-Anwendungsserver und kann dort die Ressource myproject2 hinzufügen (es handelt sich um ein Spring MVC-Projekt).

Jetzt habe ich myproject2 in Eclipse geschlossen, myproject2 aus den Tomcat-Ressourcen entfernt und führe ein frisches Subversion-Checkout mit dem Projektnamen myproject3 durch.

Nachdem ich die IDE neu gestartet habe, möchte ich myproject3 dem Tomcat-Server zuweisen, damit es bereitgestellt wird. Aber alles, was verfügbar ist, ist myproject2 zur Auswahl. Also wähle ich es aus. Ich kann auf http://localhost:8080/myproject2/ zugreifen, erhalte jedoch diese Warnung und Meldung in der Konsole:

14.12.2010 11:43:11 org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase C:\Spring\apache-tomcat-6.0.29-windows-x86\apache-tomcat-6.0.29\webapps\myproject2 innerhalb des Host-AppBase wurde angegeben und wird ignoriert
14.12.2010 11:43:11 org.apache.catalina.core.StandardContext resourcesStart
SERVE: Fehler beim Starten von statischen Ressourcen
java.lang.IllegalArgumentException: Das Dokumentstammverzeichnis C:\Spring\apache-tomcat-6.0.29-windows-x86\apache-tomcat-6.0.29\webapps\myproject3 existiert nicht oder ist kein lesbares Verzeichnis
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4249)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4418)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
14.12.2010 11:43:11 org.apache.catalina.core.StandardContext start
SERVE: Fehler bei resourceStart()
14.12.2010 11:43:11 org.apache.catalina.core.StandardContext start
SERVE: Error getConfigured
14.12.2010 11:43:11 org.apache.catalina.core.StandardContext start
SERVE: Der Start des Kontexts [/myproject3] ist aufgrund vorheriger Fehler fehlgeschlagen
14.12.2010 11:43:11 org.apache.catalina.core.StandardContext stop
INFO: Der Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myproject3] wurde nicht gestartet

Also, was ist hier falsch? Warum habe ich kein myproject3 zur Auswahl, was im Tomcat bereitgestellt werden soll?

Weiß das jemand?

Beste Grüße.


Update:

.project (myproject2):

    myproject
    Mein Projekt. NO_M2ECLIPSE_SUPPORT: Projektdaten, die mit dem Maven-Eclipse-Plugin erstellt wurden, werden in M2Eclipse nicht unterstützt.

            org.eclipse.jdt.core.javabuilder

        org.eclipse.jdt.core.javanature

.project (myproject3)

    myproject

            org.eclipse.wst.jsdt.core.javascriptValidator

            org.eclipse.wst.common.project.facet.core.builder

            org.eclipse.jdt.core.javabuilder

            org.eclipse.wst.validation.validationbuilder

            org.maven.ide.eclipse.maven2Builder

         org.eclipse.jem.workbench.JavaEMFNature
         org.eclipse.wst.common.modulecore.ModuleCoreNature
         org.maven.ide.eclipse.maven2Nature
         org.eclipse.jdt.core.javanature
         org.eclipse.wst.common.project.facet.core.nature
         org.eclipse.wst.jsdt.core.jsNature

1voto

Ladlestein Punkte 6030

Verwenden Sie die Eclipse WTP und die Integration des Tomcat-Servers, um Ihre App bereitzustellen, oder erstellen Sie ein WAR und stellen es selbst auf Tomcat bereit?

Wenn Sie die Integration verwenden, können Sie versuchen, ein WAR zu erstellen und es selbst bereitzustellen, um zu sehen, was passiert. Aktualisieren Sie den Beitrag - ich werde danach antworten.


Ich habe Ihre ursprüngliche Frage noch einmal gelesen. Vielleicht liegt das Problem daran, wie Sie mein Projekt3 erstellt haben. Ich vermute, dass es nicht über die erforderliche Projektnatur verfügt, um von Eclipse auf einen Server bereitgestellt zu werden. ("Projektnatur" ist ein Konzept von Eclipse; ein Projekt kann mehrere davon haben; verschiedene Teile von Eclipse überprüfen Projektnaturen, um festzustellen, auf welche Projekte sie zugreifen können.) Sie haben gesagt, dass Sie den Code aus Subversion überprüft und das Projekt in einem Schritt erstellt haben. Das erstellt nicht unbedingt den richtigen Projekttyp. Eclipses J2EE-Bereitstellungsmechanismus erlaubt es nur, Projekte mit einer bestimmten Projektnatur bereitzustellen - ich glaube, es ist "eclipse.common.project.facet.core.nature". Außerdem benötigt Ihr Projekt bestimmte Eclipse-Builder, um funktionsfähig zu sein; ich denke, "org.eclipse.wst.common.project.facet.core.builder" ist einer von ihnen.

Die .project-Datei im Stammverzeichnis Ihres Projekts enthält die Konfigurationen für Naturen und Builder. Sie sollten diese Dateien in Ihren beiden Projekten überprüfen.

Frage: Sind myproject2/.project und myproject3/.project in Ihrem Eclipse-Arbeitsbereich signifikant unterschiedlich (abgesehen vom Namen)? Geben Sie die Unterschiede hier an.

Frage: Enthält myproject2 in SVN die .project-Datei?

Das Beantworten dieser Fragen sollte Ihnen mehr Informationen liefern. Sie sollten die verschiedenen Optionen für das Überprüfen und Erstellen eines Projekts in einem Schritt sorgfältig prüfen.

1voto

Shiva Punkte 797

Dies geschieht, weil das Projekt zuvor mit diesem Server ausgeführt wurde oder mit diesem Server konfiguriert wurde. Daher wird sein Pfad in einem Ordner innerhalb Ihres Tomcat-Verzeichnisses gespeichert.

In Ihrem Tomcat-Ordner gehen Sie zu conf\Catalina\localhost\

In diesem Ordner löschen Sie die XML-Datei, die Ihrem Projekt entspricht.

Alternativ entfernen Sie den Server und fügen ihn erneut hinzu.

1voto

Tim Punkte 13080

Ich habe ein paar Tage danach gesucht, aber keine Lösung gefunden. Also habe ich alles neu installiert und ein neues Projekt erstellt.

1voto

chrisjleu Punkte 4185

Ich denke, Ladlestein ist sicher auf dem richtigen Weg, aber ich kann diesem Problem etwas mehr Kontext hinzufügen, indem ich reproduzieren konnte:

Ich habe eine ähnliche Eclipse (Indigo) Einrichtung, bei der ich ein Maven-Projekt habe und die Eclipse WTP-Funktion verwende, um auf einen eingebetteten Tomcat 7 Server bereitzustellen. Alles funktioniert, wenn ich das Projekt als Maven-Projekt innerhalb von Eclipse importiere, aber mein Problem tritt auf, wenn ich mvn eclipse:clean und mvn eclipse:eclipse von der Befehlszeile ausführe. Dies baut natürlich die Eclipse .project-Datei neu auf, lässt sie jedoch ohne einige anscheinend wichtige Natures und buildCommands.

Ich sehe eine .project-Datei, die der fehlerhaften in der Frage sehr ähnlich ist (in myproject2) und innerhalb von Eclipse selbst ist das Projekt nicht mehr das, was Eclipse ein "Dynamic Web Module" nennt - daher nicht bereitstellbar - und es handelt sich auch nicht mehr um ein Maven-Projekt. Ich konnte dies folgendermaßen beheben:

Machen Sie zunächst ein Maven-Projekt, indem Sie Folgendes zur .project-Datei hinzufügen (ich weiß nicht, ob es einen besseren Weg über Eclipse selbst gibt):

    ...
    ...

        org.eclipse.m2e.core.maven2Builder

    ...
    ...
    org.eclipse.m2e.core.maven2Nature 

Jetzt können Sie sicherstellen, dass das Projekt auf dem neuesten Stand ist, indem Sie mit der rechten Maustaste auf das Projekt klicken und Maven > Projektkonfiguration aktualisieren... ausführen.

Als nächstes können Sie das Projekt bereitstellbar machen, indem Sie Eigenschaften > Projektstrukturen > Dynamic Web Module (Kontrollkästchen) auswählen. Hier finden Sie eine umfangreichere Anleitung zur Umwandlung Ihres Projekts in ein Dynamic Web Module.

Am Ende sollte Ihre .project-Datei eher so aussehen:

    project1
    NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.

            org.eclipse.wst.common.project.facet.core.builder

            org.eclipse.jdt.core.javabuilder

            org.eclipse.m2e.core.maven2Builder

            org.eclipse.wst.validation.validationbuilder

        org.eclipse.jdt.core.javanature
        org.eclipse.wst.common.project.facet.core.nature
        org.eclipse.m2e.core.maven2Nature
        org.eclipse.wst.common.modulecore.ModuleCoreNature

0voto

Patience Mpofu Punkte 405

Das Entfernen der Serverinstanz aus meiner IDE und das erneute Hinzufügen haben mein Problem gelöst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X