2009-05-11 9 views
12

Sto cercando di ottenere la modalità GWT in Eclipse, alla this HOWTO. Servlet funzionano bene, come fa il mio codice GWT, ma tutti i miei JSP falliscono perché con errori come il seguente:Problema GWT/Eclipse/Jetty: Jasper non può risolvere le librerie di tag

[WARN] /view/lniExecutiveSummary.htm 
org.apache.jasper.JasperException: /WEB-INF/jsp/lni/lniExecutiveSummary.jsp(1,1) The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application 
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) 
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409) 
    [ trimmed ] 

Questa webapp funziona bene quando schierato sotto Tomcat 5x; Non riesco proprio a capire come risolvere i tagli durante l'esecuzione in Eclipse. Sono nuovo di Eclipse, e farlo funzionare con tutte le parti mobili necessarie per GWT + Maven mi fa tirare fuori i capelli.

Aggiornamento: Non uso più Eclipse; Sono passato (indietro!) A Intellij IDEA. Quindi non posso valutare onestamente le risposte che persone gentili hanno postato. Una volta che un'azione di voto si verifica, o qualcun altro segnala il successo con uno di questi metodi, accetterò la risposta appropriata. Grazie.

+1

Difficile credere che quasi 7 anni dopo, questo è ancora un problema. Così tante risposte SO per il problema di risolvere gli URI JSTL in generale, ma nessuna soluzione specifica per GWT e Jetty, che, nascosti da qualche parte in profondità, oscuri e non molto ovvi, hanno una strana dipendenza dai vecchi JSTL che rovinano ogni tentativo di importare più recenti Dipendenze JSTL. (Una volta che il GWT è stato implementato su Tomcat, ad esempio, funziona tutto.) La mia migliore speranza in questa fase è che qualcuno come @BalusC inizi a fare GWT (se non lo ha già fatto) e alla fine postare una correzione per questo problema. :-P –

risposta

1

Hai provato a contrassegnare "jsf-api.jar" come "esportato" nel tuo progetto Java?
(come indicato nel this thread)

1.) Andare nelle proprietà java-progetto e segnare il "jsf-api.jar", come esportato. (project>properties>java build path>order and exports)
2.) Andate nelle preferenze avanzate globale Tomcat e aggiungere il progetto a classpath Tomcat (windows>preferences>tomcat>advanced>add projects to tomcat classpath)

Poi, riprovare a eseguire il webapp in eclisse.

Ecco an article che descrive la stessa procedura/setup, non per JSF, ma Hudson (stesso problema però)

Si può vedere chiaramente i due passaggi che ho citato sopra:

http://wiki.hudson-ci.org/download/attachments/4161557/override.png

http://wiki.hudson-ci.org/download/attachments/4161557/otherTips.png

+1

Hmm, perché jsf? Intendevi dire jstl? Ho già questo come dep nella mia configurazione di Maven, quindi dovrebbe già essere sul classpath. Ma vado avanti e prova ad aggiungerlo manualmente al percorso di build. Grazie. –

+1

JSTL è più simile :) Ma il principio generale descritto in questa risposta è ancora valido. Quindi, ha funzionato per il tuo caso? – VonC

+1

No. Ho già elencato jstl come dipendenza tramite Maven; appare sotto i Maven deps nella scheda "Librerie", e ho "Dipendenze Maven" spuntate sulla scheda "Ordine ed esportazione". Ancora nessuna gioia. :-( –

1

Sento il tuo dolore. Ho passato attraverso lo stesso dolore cercando di convincere gwt, maven ed eclipse a lavorare insieme.

Sono riuscito a farlo funzionare con Maven utilizzando il seguente pom.xml. In questo modo è possibile utilizzare mvn gwt:run per l'esecuzione in modalità ospitata, ma sfortunatamente, non sono mai riuscito a ottenere l'obiettivo mvn mvn gwt:eclipse per generare una configurazione di runtime di avvio di eclissi per funzionare.

Ecco gli snippet rilevanti dal mio pom.xml. Nota che ho trovato più facile installare gwt in una posizione separata e indicare a Maven di usarlo invece di scaricare mvn gwt dal repository. L'ambito del livello "sistema" nelle dipendenze MVN è ciò che rende questo accada.

<properties> 

     <!-- convenience to define GWT version in one place --> 
     <gwt.version>1.7.1</gwt.version> 
     <google.webtoolkit.home>${env.GWT_HOME}</google.webtoolkit.home> 

     <!-- tell the compiler we can use 1.5 --> 
     <maven.compiler.source>1.6</maven.compiler.source> 
     <maven.compiler.target>1.6</maven.compiler.target>  

    </properties> 

    <dependencies> 

     <!-- GWT dependencies (from central repo) --> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-servlet</artifactId> 
     <version>${gwt.version}</version> 
     <scope>system</scope> 
     <systemPath>${env.GWT_HOME}/gwt-servlet.jar</systemPath> 
    </dependency> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-user</artifactId> 
     <version>${gwt.version}</version> 
     <scope>system</scope> 
     <systemPath>${env.GWT_HOME}/gwt-user.jar</systemPath> 
    </dependency> 

    ... other dependencies... 
    </dependencies> 

    <build> 
    <outputDirectory>war/WEB-INF/classes</outputDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>gwt-maven-plugin</artifactId> 
     <version>1.1</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>compile</goal> 
       <goal>generateAsync</goal> 
       <goal>test</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <runTarget>com.gwt.example/Application.html</runTarget> 
      <extraJvmArgs>-Xmx512m</extraJvmArgs> 
     </configuration> 
     </plugin> 
     <!-- 
      If you want to use the target/web.xml file mergewebxml produces, 
      tell the war plugin to use it. 
      Also, exclude what you want from the final artifact here. 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <webXml>target/web.xml</webXml> 
        <warSourceExcludes>.gwt-tmp/**</warSourceExcludes> 
       </configuration> 
      </plugin> 
      --> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.0.2</version> 
      <configuration> 
      <source>${maven.compiler.source}</source> 
      <target>${maven.compiler.target}</target> 
      <module>com.gwt.example</module> 
      </configuration> 
     </plugin> 
    </plugins> 

    ...rest of pom.xml... 

Un'altra tecnica che ho avuto successo con è quello di utilizzare l'eclissi google gwt plugin. Basta usare la procedura guidata per creare un nuovo progetto gwt, assicurarsi di poterlo eseguire da eclipse, quindi modificare con il proprio codice.

1

Questa webapp funziona correttamente quando distribuito in Tomcat 5x; Non riesco proprio a capire come risolvere i tagli durante l'esecuzione in Eclipse.Sono nuovo di Eclipse, e farlo funzionare con tutte le parti mobili necessarie per GWT + Maven mi fa tirare fuori i capelli.

È a quanto pare hanno il file JAR JSTL (s) in Tomcat/lib invece di WEB-INF/lib. È possibile risolvere questo problema in almeno tre modi:

  1. Sposta/copia i file JAR JSTL in WEB-INF/lib.
  2. Sposta/copia i file JAR JSTL in Tomcat/lib del computer di sviluppo.
  3. Associare il server Tomcat destro contenente i file JAR JSTL con il progetto Web in Eclipse. Se non ancora fatto, aggiungi il server Tomcat nella vista Servers. Poi, nel progetto di proprietà vanno a Java Build Path>Biblioteche>Aggiungi Biblioteca>Server Runtime> selezionare il server in questione.
1

Aggiungere i file Jar in classpath del progetto eclipse. se hai già questo file tomcat lib. Questa opzione funzionerà per te. La seconda opzione è aggiungere jar nella cartella lib Web-Inf se si dispone di un progetto Web di eclissi.

Problemi correlati