2013-03-02 16 views
8

Il mio gae + spring + maven progetto funziona perfettamente. Ma non riesco a farlo funzionare utilizzando eclissi.dipendenza Maven di primavera-web non pubblicata con eclissi

sembra la primavera-web dipendenza dichiarato nel mio pom.xmlsta scomparendo da WEB-INF/lib quando eseguo il mio progetto con GAE da Eclipse (utilizzando Google Plugin, Esegui come > Applicazione Web). Quindi, senza primavera-web questa è l'eccezione:

Could not instantiate listener org.springframework.web.context.ContextLoaderListener 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 

(completa stacktrace GAE here)

Da console, in esecuzione mvn clean package gae:run, l'applicazione funziona come un fascino e primavera-web è posto sotto Directory WEB-INF/lib come previsto.

appena pubblicato il mio progetto di test a BitBucket: https://bitbucket.org/jelies/gae-spring-maven

Qualsiasi idea del perché non viene pubblicato primavera-web a WEB-INF/lib al momento del lancio webapp da Eclipse?


Usando:

  • SpringSource Toolsuite 3.1.0 (basato su Eclipse 3.8)
  • Java 6
  • Primavera 3.2.1
  • Maven 3.0.4
  • Google App Engine 1.7.5
  • maven-gae-plugin 0.9.6

Aggiornamento:primavera-web viene pubblicato dipendenza WEB-INF/lib quando si utilizza la primavera versione 3.1.4.RELEASE. Questo non sta accadendo con nessuna versione 3.2.X.

+0

Si esegue il server di sviluppo con il plug-in m2eclipse e gli stessi obiettivi della console? O vuoi avviare il server di sviluppo con il plugin google (esegui come-> applicazione web)? – Eich

+0

Voglio avviare il server di sviluppo con il plugin google, usando "esegui come -> applicazione web" come hai detto. – jelies

+0

Dovresti usare il plugin [m2eclipse] (http://www.sonatype.org/m2eclipse/) e avviare il server di sviluppo con Maven. Maven copia ogni dipendenza (server) dalla cartella 'WEB-INF/lib'. Il 'pom.xml' non ha effetto sul plugin google (in ogni caso). Se vuoi eseguire il server con il plugin google dovrai copiare tutte le librerie da solo nella cartella 'WEB-INF/lib'. La stessa procedura è necessaria se vuoi implementare il tuo progetto con il plugin google su GAE. Quindi secondo me è meglio (e molto più facile) usare Maven in entrambi i casi. O hai davvero bisogno del plugin di google? – Eich

risposta

0

Definitivamente, spring 3.2.x con eclipse e Maven non funziona; spring-web non viene pubblicato su WEB-INF/lib all'avvio dell'applicazione da Google Eclipse Plugin.

Provato con Spring 3.2.1 e 3.2.2. Funziona solo per me usando versioni inferiori (ora sto usando 3.1.4).

2

Aggiunto un problema Jira per questo problema con la mia configurazione (Eclipse 4.2, è stata del 7,0, mvn 3): https://jira.springsource.org/browse/SPR-10494

+0

Nel mio caso questo sta accadendo con Google App Engine invece WAS7, ma forse c'è un bug relativo a questo. Grazie per la JIRA, seguirò ogni aggiornamento lì. – jelies

1

Se la vostra.il file classpath ha la voce <classpathentry kind="output" path="target/classes"/>, prova a cambiarlo nella tua directory WEB-INF/classes. Il mio è impostato con standard Maven, quindi ho cambiato questa linea in <classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>. Questo ha corretto i miei problemi (Eclipse Juno, WAS 7, no m2e install).

Inoltre, nel caso si applichi ad altri, dovrei menzionare che con il mio server (Websphere) sto scegliendo l'impostazione di pubblicazione "Esegui server con risorse all'interno dell'area di lavoro".

Questo problema mostra quanto realmente non capisco la pubblicazione di Eclipse ancora, ma prima di quella modifica quando ho scelto l'impostazione "nello spazio di lavoro" in realtà ha pubblicato le mie risorse su \ workspace.metadata.plugins \ org.eclipse.wst .server.core \ tmp0 e WEB-INF \ lib non conteneva spring-web. Tuttavia, con la modifica di cui sopra non vedo più il mio codice pubblicato in quella directory. Non sono esattamente sicuro di come il mio server abbia i binari di cui ha bisogno, ma sembra che funzioni.

Come nota a margine/bonus aggiuntivo (forse completamente non correlato), non ho più bisogno di fare una pubblicazione per vedere gli aggiornamenti ai miei JSP quando apporto le modifiche.

+0

Grazie, ci provo! – jelies

0

questa fissa per me:

  1. trovare la posizione della molla-web.jar questo viene incluso in te web app. Nel mio caso è in user.m2 \ repository \ org \ springframework \ spring-web \ 4.1.6.RELEASE \ spring-web-4.1.6.RELEASE.jar
  2. Apri spring-web-4.1.6.RELEASE. jar en eg. 7zip
  3. eliminare questo file dal vaso: META-INF \ web-fragment.xml (in 7zip tasto destro del mouse sul file -> cancellare)
  4. Chiudere 7zip e correre "Pubblica" sul server in Eclipse

Altre informazioni: https://jira.spring.io/browse/SPR-10494?focusedCommentId=94572&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-94572

Problemi correlati