2014-11-04 9 views
6

Wiem, że to pytanie zostało zadane wcześniej, ale nie udało mi się go rozwiązać za pomocą rozwiązań z innych postów. Próbuję skompilować złożoną hierarchię projektów gwt za pomocą maven. Wszystko działało dobrze aż musiałem dodać jeszcze jedną bibliotekę, a dokładniej: org.eclipse.birt.runtimeBłąd operacji wstępnej = 206; nazwa pliku lub rozszerzenie jest zbyt długie

Teraz otrzymuję ten błąd:

[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 

Zależność używam jest:

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

Czy Birt stosowane w GWT kodu po stronie klienta? Jeśli nie, to zreorganizuj swój projekt, aby oddzielić kod po stronie klienta i po stronie serwera na odrębne moduły; inaczej więc, cóż, nie korzystasz z systemu Windows? –

+0

nie, to tylko strona serwera; po stronie klienta i po stronie serwera są już rozdzielone, co masz na myśli? – ahlexander

Odpowiedz

5

końcu udało mi się go rozwiązać:

Okazuje się BIRT, wraz z jego zależnościami, po prostu dodając zbyt wiele bibliotek i ścieżka klasy stała się zbyt długa dla systemu Windows polecenie, aby obsłużyć. Ponadto biblioteki Birt mają głupie długie nazwy.

rozwiązać go za pomocą tej zależności (Potrzebowałem tylko środowisko wykonawcze), stworzyłem lib i Birt katalogów i umieścić słoik tam sobie:

<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

Powinieneś oznaczyć tę odpowiedź jako zaakceptowaną, aby inni łatwiej mogli być świadomi, że nie szukasz już rozwiązania. –

+1

Za 19 godzin będę mógł to zrobić. – ahlexander

0

Birt nie ma powodu, aby być w ścieżce klas, jeśli nie jest używany po stronie klienta.

Niestety, Maven czasami sprawia, że ​​rzeczy trudniejsze niż to konieczne; więc z Maven potrzebujesz swojego kodu klienta GWT jako specyficznego modułu Mavena bez zależności od kodu po stronie serwera; następnie "scalaj" wszystko w jedną warstwę WAR używając nakładek WAR.

Przy tym układzie (nazwijmy moduły app-client i app-server), masz kilka rozwiązań w celu uruchomienia gwt:run lub gwt:debug:

  • nigdy nie próbowałem, ale prawdopodobnie można skonfigurować hostedWebapp pkt do katalogu app-server wyjściowego:

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

    Upewnij się uruchomić mvn clean przed pakowaniem swoich app-server WAR ty gh mieć pewność generowanych plików JS pochodzą z app-client (jako nakładka wojnie) i nie app-server (generowane przez gwt:run)

  • co używam w gwt-maven-archetypes: uruchamianie kodu po stronie serwera w odrębnym pojemniku serwletów i wykorzystanie <noServer>true</noServer>

    Upewnij się uruchomić mvn clean przed pakowaniem zbyt lub użyj -Dgwt.compiler.force, aby mieć pewność, gwt:compile nie potraktuje DEVMODE generowane *.nocache.js jak plik up-to-date i skompilować aplikację.

Powiązane problemy