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

时间:2014-11-04 08:42:25

标签: java eclipse maven gwt birt

我知道之前已经问过这个问题,但我无法使用其他帖子的解决方案来修复它。 我正在尝试使用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

我正在使用的依赖是:

<dependency>
    <groupId>org.eclipse.birt.runtime</groupId>
    <artifactId>org.eclipse.birt.runtime</artifactId>
    <version>4.4.1</version>
</dependency>

2 个答案:

答案 0 :(得分:6)

我终于设法解决了它:

结果是birt,连同它的依赖项,只是添加了太多的库,并且类路径变得太长,Windows命令无法处理。此外,birt图书馆的名字很长。

使用此依赖项解决了它(我只需要运行时),我创建了lib和birt目录并将jar放在那里:

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

答案 1 :(得分:0)

如果Birt没有在客户端使用,则没有理由进入类路径。

不幸的是,Maven有时会让事情变得更加艰难;因此,对于Maven,您需要将GWT客户端代码作为特定的Maven模块,而不依赖于服务器端代码;然后&#34;合并&#34;使用WAR覆盖将所有内容整合到一个WAR中。

使用该布局(让我们调用模块app-clientapp-server),您可以使用多个解决方案来启动gwt:rungwt:debug

  • 从未尝试过,但您可以将hostedWebapp配置为指向app-server输出目录:

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

    确保在打包mvn clean WAR之前运行app-server,以确保生成的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文件视为up - 到目前为止,并将重新编译该应用程序。