2014-11-04 429 views
6

我知道這個問題已被問過,但我無法使用其他帖子的解決方案修復它。 我想使用maven編譯一個複雜的gwt項目層次結構。 一切工作正常,直到我不得不添加更多的圖書館,更具體:org.eclipse.birt.runtimeCreateprocess error = 206;文件名或擴展名太長

現在我得到這個錯誤:

[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> 
+0

是GWT的客戶端代碼中使用比爾特:

使用這種依賴它(我只需要運行時),我創建了lib和BIRT目錄,放在罐子裏有我自己解決了嗎?如果不是,則重構項目以將客戶端和服務器端代碼分離爲不同的模塊;否則,那麼,不要使用Windows? – 2014-11-04 09:46:05

+0

nope,它只是服務器端;客戶端和服務器端已經分開了,你是什麼意思? – ahlexander 2014-11-04 09:50:55

回答

5

我終於設法解決這個問題:

原來BIRT,與它的依賴一起,無非是增加過多的庫和類路徑變得太長for Windows命令來處理。此外,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> 
+0

您應該將此答案標記爲已接受,以便其他人更容易意識到您不再尋找解決方案。 – 2014-11-05 12:03:25

+1

從現在開始的19個小時內,我就可以做到這一點。 – ahlexander 2014-11-05 13:23:00

0

如果未使用客戶端,Birt沒有理由在類路徑中。

不幸的是,Maven有時會讓事情變得比必要更難;所以對於Maven,您需要將您的GWT客戶端代碼作爲特定的Maven模塊,而不依賴於服務器端代碼;然後使用WAR覆蓋將所有內容「合併」爲一個WAR。

隨着該佈局(我們稱之爲模塊app-clientapp-server),你有幾種解決方案,推出gwt:rungwt:debug

  • 從來沒有嘗試過,但你也許可以配置hostedWebapp指向你的app-server輸出目錄:

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

    確保您打包app-server WAR你之前運行mvn clean GH以確保生成的JS文件來自app-client(作爲WAR覆蓋),而不是app-server(由gwt:run生成)

  • 我在gwt-maven-archetypes使用方法:啓動在不同的Servlet容器服務器端代碼,並使用<noServer>true</noServer>

    請務必包裝過於之前運行mvn clean,或使用-Dgwt.compiler.force,以確保gwt:compile將不能治療DevMode的生成*.nocache.js文件跟上時代的,並會重新編譯應用程序。