Createprocess error = 206; 文件名或扩展名太长
我知道之前已经问过这个问题,但我无法使用其他post的解决方案来修复它。 我正在尝试使用maven编译复杂的gwt项目层次结构。 一切正常,直到我不得不再添加一个库,更具体地说: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
我正在使用的依赖是:
org.eclipse.birt.runtime org.eclipse.birt.runtime 4.4.1
我终于设法解决了它:
结果是birt,连同它的依赖,只是添加了太多的库,类路径变得太长,Windows命令无法处理。 此外,birt图书馆的名字很长。
解决了它使用这种依赖(我只需要运行时),我创建了lib和birt目录并将jar放在那里:
org.eclipse.birt.runtime org.eclipse.birt.runtime 4.4.1 system ${basedir}/lib/birt/birt.runtime-4.4.1.jar
如果没有使用客户端,Birt没有理由进入类路径。
不幸的是,Maven有时会让事情变得更加艰难; 因此,对于Maven,您需要将GWT客户端代码作为特定的Maven模块,而不依赖于服务器端代码; 然后使用WAR覆盖将所有内容“合并”到一个WAR中。
使用该布局(让我们调用模块app-client
和app-server
),你有几个解决方案来启动gwt:run
或gwt:debug
:
-
从未尝试过,但您可以将
hostedWebapp
配置为指向您的app-server
输出目录:../app-server/target/app-server-${project.version}/ 确保在打包
app-server
WAR之前运行mvn clean
,以确保生成的JS文件来自app-client
(作为WAR覆盖)而不是app-server
(由gwt:run
生成) -
我在gwt-maven-archetypes中使用的 :在不同的servlet容器中启动服务器端代码,并使用
true 确保在打包之前运行
mvn clean
,或者使用-Dgwt.compiler.force
,以确保gwt:compile
不会将DevMode生成的*.nocache.js
文件视为*.nocache.js
文件,并将重新编译应用程序。