Createprocess грешка=206; името на файла или разширението е твърде дълго

Знам, че този въпрос е задаван и преди, но не успях да го поправя с помощта на решения от други публикации. Опитвам се да компилирам сложна йерархия от gwt проекти, използвайки maven. Всичко работеше добре, докато не трябваше да добавя още една библиотека, по-конкретно: org.eclipse.birt.runtime

Сега получавам тази грешка:

[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

Зависимостта, която използвам е:

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

person ahlexander    schedule 04.11.2014    source източник
comment
Използва ли се Birt в кода от страна на клиента на GWT? Ако не, тогава преработете проекта си, за да разделите кода от страна на клиента и от страна на сървъра в отделни модули; в противен случай тогава, добре, не използвайте Windows?   -  person Thomas Broyer    schedule 04.11.2014
comment
не, това е само страна на сървъра; клиентската и сървърната страна вече са разделени, какво точно имате предвид?   -  person ahlexander    schedule 04.11.2014


Отговори (2)


Най-накрая успях да го реша:

Оказва се, че birt, заедно със своите зависимости, просто е добавял твърде много библиотеки и класовата пътека стана твърде дълга, за да може да се справи с командата на Windows. Освен това birt библиотеките имат глупаво дълги имена.

Реших го с помощта на тази зависимост (имах нужда само от времето за изпълнение), създадох директориите lib и birt и сам поставих буркана там:

<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>
person ahlexander    schedule 05.11.2014
comment
Трябва да маркирате този отговор като приет, така че другите по-лесно ще разберат, че вече не търсите решение. - person James Jenkins; 05.11.2014
comment
След 19 часа ще мога да направя това. - person ahlexander; 05.11.2014

Birt няма причина да бъде в classpath, ако не се използва от страна на клиента.

За съжаление, Maven понякога прави нещата по-трудни от необходимото; така че с Maven имате нужда вашият GWT клиентски код да бъде конкретен модул на Maven без зависимост от кода от страна на сървъра; след това "слейте" всичко в един WAR, като използвате WAR наслагвания.

С това оформление (да наречем модулите app-client и app-server), имате няколко решения за стартиране на gwt:run или gwt:debug:

  • никога не съм опитвал, но вероятно бихте могли да конфигурирате hostedWebapp да сочи към вашата app-server изходна директория:

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

    Уверете се, че сте изпълнили mvn clean преди да опаковате вашия app-server WAR, за да сте сигурни, че генерираните JS файлове идват от app-client (като WAR наслагване), а не от app-server (генерирано от gwt:run)

  • какво използвам в gwt-maven-archetypes: стартиране на сървърния код в отделен контейнер за сервлети и използвайте <noServer>true</noServer>

    Уверете се, че сте изпълнили mvn clean преди опаковането също или използвайте -Dgwt.compiler.force, за да сте сигурни, че gwt:compile няма да третира генерирания от DevMode *.nocache.js файл като актуален и ще компилира отново приложението.

person Thomas Broyer    schedule 04.11.2014