FileNotFoundException für bean-definition-Datei passiert nur online, nicht auf localhost

Als ich veröffentlicht eine war-Datei für eine Anwendung, die lokal mit Eclipse WTP, ich hatte eine FileNotFoundException für die bean.xml Datei mit meinen Bohnen Definitionen.

SEVERE: Exception sending context initialized event to listener instance of 
    class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: 
   IOException parsing XML document from class path resource 
   [META-INF/spring/beans.xml]; nested exception is java.
io.FileNotFoundException: class path resource [META-INF/spring/beans.xml] 
    cannot be opened because it does not exist
    at Caused by: java.io.FileNotFoundException: class path resource 
    [META-INF/spring/beans.xml] cannot be opened because it does not exist
    ...

Ich erstellt die war-Datei mit mvn war:Krieg und kopiert in den webapps-Ordner von Tomcat 7.

beans.xml befindet sich in src/main/resources/META-INF/spring/beans.xml und ich hab Folgendes in meiner pom.xml:

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

In der war-Datei beans.xml wird verpackt in META-INF/spring/beans.xml

In meinem web.xml ich habe:

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:META-INF/spring/beans.xml</param-value>
</context-param>

Aber die Datei wird nicht gefunden. Wie das problem zu lösen?

UPDATE: Matthew Farwell vorgeschlagen, ist bean.xml nicht verpackt in der richtigen Lage, so dass es nicht in die Klasse Pfad, ich denke, es ist angegeben mit maven-war-plugin Parametern, die ich jetzt versuchen, Blick in die Dokumentation. Wenn jemand weiß, wäre es hilfreich.

UPDATE 2: Wie bereits in maven-war-plugin Dokumentation, gibt es einen optionalen parameter namens targetPath. Ich habe versucht, und nach dem Wechsel maven-war-plugin-Konfiguration hinzufügen targetPath wird es richtig verpackt.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <webResources>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>WEB-INF/classes</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

UPDATE 3: Über Ryan Stewart ' s Vorschlag, ich begann meine erste pom-setup mit roo, aber nach, dass ich getan habe, viele Veränderungen und ich bin nicht mit roo nicht mehr. Das Verzeichnis src/main/resources wird nicht erwähnt, in anderen Orten, die in pom.xml (ich verwendet habe, grep), aber die einzige Einstellung, die sieht mir suspekt ist:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <configuration><encoding>UTF-8</encoding></configuration>
</plugin>

Habe ich auskommentiert, die plugins, aber nichts änderte sich, dann habe ich auskommentiert, den Teil der Konfiguration des maven-war-plugin, aber src/main/resources nicht Hinzugefügt wurde, die den Krieg nicht mehr, so jetzt habe ich es wieder und ich werde es hochladen, um es zu testen-online - (es ist immer noch ein staging-server eigentlich nicht die final sowieso).

UPDATE 4 Ryan Stewart vorgeschlagen, dass das problem war, dass ich mit "mvn war:Krieg" anstelle von "mvn package", und das war ja das problem. Mit meinem targetPath, die Ressourcen erschien in WEB-INF/classes, aber es waren keine Klassen gibt.

Ich kämpfen war ein harter Kampf, während stattdessen die einfachere Lösung war, entfernen Sie den Teil der Konfiguration, wie in update 3, und mit "mvn package" zu bauen der war-Datei. Danke an Euch beide, Ryan und Matthew, nicht nur ich habe mein problem gelöst, aber ich habe auch gelernt, etwas mehr über Maven.

  • ist beans.xml immer verpackt in den Krieg?
  • ja, als ich schrieb: "In der war-Datei beans.xml wird verpackt in META-INF/spring/beans.xml" nun, ich bin versucht zu sagen, Maven, um es in /WEB-INF/lib/ oder /WEB-INF/classes/ Ordner
InformationsquelleAutor stivlo | 2011-10-02
Schreibe einen Kommentar