2014-11-04 29 views
6

So che questa domanda è stata posta prima, ma non ho potuto risolverlo usando soluzioni di altri post. Sto provando a compilare una complessa gerarchia di progetti gwt usando Maven. tutto ha funzionato bene fino a quando ho dovuto aggiungere una libreria di più, più precisamente: org.eclipse.birt.runtimeErrore createprocess = 206; il nome file o l'estensione è troppo lunga

Ora ottengo questo errore:

[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.6.1:debug .... 

..... [Lots of jars, many containing birt, no duplicates though] ..... 


Error while executing process. Cannot run program "C:\Program Files\Java\jdk1.8.0_20\jre\bin\java": CreateProcess error=206, The filename or extension is too long 

La dipendenza che sto utilizzando è:

<dependency> 
    <groupId>org.eclipse.birt.runtime</groupId> 
    <artifactId>org.eclipse.birt.runtime</artifactId> 
    <version>4.4.1</version> 
</dependency> 
+0

Is Birt utilizzato in GWT codice client-side? In caso contrario, rifattorizzare il progetto in modo da separare il codice lato client e lato server in moduli distinti; altrimenti, allora, non usare Windows? –

+0

no, è solo lato server; lato client e lato server sono già separati, cosa intendi esattamente? – ahlexander

risposta

5

sono finalmente riuscito a risolverlo:

Risulta BIRT, insieme con le sue dipendenze, era semplicemente aggiungendo anche molte biblioteche e il percorso di classe è diventato troppo lungo per le finestre comando da gestire. Inoltre, le biblioteche di birt hanno nomi stupidamente lunghi.

risolto usando questa dipendenza (mi serviva solo il tempo di esecuzione), ho creato le directory lib e BIRT e messo il vaso io stesso:

<dependency> 
    <groupId>org.eclipse.birt.runtime</groupId> 
    <artifactId>org.eclipse.birt.runtime</artifactId> 
    <version>4.4.1</version> 
    <scope>system</scope> 
    <systemPath>${basedir}/lib/birt/birt.runtime-4.4.1.jar</systemPath> 
</dependency> 
+0

È necessario contrassegnare questa risposta come accettata, in modo che altri possano essere resi più facilmente consapevoli del fatto che non si è più alla ricerca di una soluzione. –

+1

Tra 19 ore da ora sarò in grado di farlo. – ahlexander

0

Birt non ha motivo di essere nel classpath se non viene utilizzato lato client.

Sfortunatamente, Maven a volte rende le cose più difficili del necessario; quindi con Maven è necessario che il codice client GWT sia un modulo Maven specifico senza dipendenze dal codice lato server; quindi "unisci" tutto in una singola GUERRA usando gli overlay di WAR.

Con il layout (chiamiamolo i moduli app-client e app-server), sono disponibili diverse soluzioni di lanciare gwt:run o gwt:debug:

  • mai provato ma probabilmente si potrebbe configurare hostedWebapp per puntare alla directory app-server uscita:

    <hostedWebapp>../app-server/target/app-server-${project.version}/</hostedWebapp> 
    

    assicurarsi di eseguire mvn clean prima del confezionamento tuoi app-server tu GUERRA gh per essere sicuri che i file JS generati provengono da app-client (come una sovrapposizione WAR) e non app-server (generati da gwt:run)

  • quello che io uso in gwt-maven-archetypes: lanciare il codice lato server in un servlet container distinti, e l'uso <noServer>true</noServer>

    assicurarsi di eseguire mvn clean prima del confezionamento troppo oppure usa -Dgwt.compiler.force, per essere sicuri gwt:compile non tratterà il file di *.nocache.js DevMode generati come up-to-date e si ricompilare l'applicazione.