我知道之前已经问过这个问题,但我无法使用其他帖子的解决方案来修复它。 我正在尝试使用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>
答案 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-client
和app-server
),您可以使用多个解决方案来启动gwt:run
或gwt: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 - 到目前为止,并将重新编译该应用程序。