Createprocess error = 206;文件名或扩展名太长

问题描述:

我知道这个问题已被问过,但我无法使用其他帖子的解决方案修复它。 我想使用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

我终于设法解决这个问题:

原来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

如果未使用客户端,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文件跟上时代的,并会重新编译应用程序。