【问题标题】:Createprocess error=206; the filename or extension is too long [duplicate]创建过程错误=206;文件名或扩展名太长[重复]
【发布时间】:2014-11-04 08:42:25
【问题描述】:

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

【问题讨论】:

  • GWT 客户端代码中是否使用了 Birt?如果不是,则重构您的项目,将客户端和服务器端代码分离为不同的模块;否则,那么,不要使用 Windows?
  • 不,这只是服务器端;客户端和服务器端已经分开了,你到底是什么意思?

标签: java eclipse maven gwt birt


【解决方案1】:

我终于设法解决了:

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

【讨论】:

  • 您应该将此答案标记为已接受,以便其他人更容易意识到您不再寻找解决方案。
  • 从现在起 19 小时后,我将能够做到这一点。
【解决方案2】:

如果不在客户端使用,Birt 没有理由在类路径中。

不幸的是,Maven 有时会让事情变得比必要的更难;所以使用 Maven,你需要你的 GWT 客户端代码是一个特定的 Maven 模块,而不依赖于服务器端代码;然后使用 WAR 覆盖将所有内容“合并”到单个 WAR 中。

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

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

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

    确保在打包 app-server WAR 之前运行 mvn clean,但要确保生成的 JS 文件来自 app-client(作为 WAR 覆盖)而不是 app-server(由 gwt:run 生成)

  • 我在 gwt-maven-archetypes 中使用的内容:在不同的 servlet 容器中启动服务器端代码,然后使用 &lt;noServer&gt;true&lt;/noServer&gt;

    确保在打包之前也运行mvn clean,或者使用-Dgwt.compiler.force,以确保gwt:compile 不会将DevMode 生成的*.nocache.js 文件视为最新文件并重新编译应用程序。

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 2022-06-14
    • 2021-11-21
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多