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>
我终于设法解决这个问题:
原来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>
您应该将此答案标记为已接受,以便其他人更容易意识到您不再寻找解决方案。 – 2014-11-05 12:03:25
从现在开始的19个小时内,我就可以做到这一点。 – ahlexander 2014-11-05 13:23:00
如果未使用客户端,Birt没有理由在类路径中。
不幸的是,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>
确保您打包
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
文件跟上时代的,并会重新编译应用程序。
是GWT的客户端代码中使用比尔特:
使用这种依赖它(我只需要运行时),我创建了lib和BIRT目录,放在罐子里有我自己解决了吗?如果不是,则重构项目以将客户端和服务器端代码分离为不同的模块;否则,那么,不要使用Windows? – 2014-11-04 09:46:05
nope,它只是服务器端;客户端和服务器端已经分开了,你是什么意思? – ahlexander 2014-11-04 09:50:55