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-clientapp-server ),你有几个解决方案来启动gwt:rungwt: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文件,并将重新编译应用程序。