• CreateProcess error=206, The filename or extension is too long"的一个解决方案


    在实际项目中我使用antrun 和 closure-compiler压缩JS项目。然后我就使用如下代码:
    首先加入依赖。
    <dependency>
        <groupId>com.google.javascript</groupId>
        <artifactId>closure-compiler</artifactId>
        <version>v20160315</version>
    </dependency>
    pom.xml文件加入插件代码。
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
        <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <property name="closure.compiler.class.name"
                                      value="com.google.javascript.jscomp.CommandLineRunner" />
                <echo message="Generate main.min.js" />
                <java classname="${closure.compiler.class.name}"
                      classpathref="maven.compile.classpath" fork="true" failonerror="true">
                  <arg value="--js"/>
                  <arg value="${basedir}/src/main/webapp/js/main.js"/>
                  <arg value="--js_output_file"/>
                  <arg value="${basedir}/src/main/webapp/js/main.min.js" />
                  <arg value="--compilation_level"/>
                  <arg value="SIMPLE_OPTIMIZATIONS"/>
                </java>
              </target>
            </configuration>
          </execution>
       </executions>
     </plugin>

    然后运行发现报错。CreateProcess error=206, ÎļþÃû»ò)չÃû 然后后面有一堆乱码,然后经过stackoverflow查找之后 发现后面乱码大概是“CreateProcess error=206, The filename or extension is too long

    在Windows下命令行支持的字符串长度是有限制的,在计算机上运行 Microsoft Windows XP 或更高版本,可以在命令提示符下使用的字符串的最大的长度 8191 个字符。 在运行 Microsoft Windows 2000 或 Windows NT 4.0 的计算机上, 将最大长度可以在命令提示符下使用的字符串的为 2047 个字符。

    我也弄不明白为啥我的antrun命令过长,上面的arg参数那么少。然后我使用 mvn package –X 打印详细信息。发现有个classpathref=”maven.compile.classpath”回去打印所有lib所有jar包来运行命令。

    而不是指定closure-complie这个jar包运行。

    在maven中知道可以直接指定maven 依赖的closure-complie.jar包,参照如下地址:

    http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html

    所以修改上面pom.xml代码:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
        <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <property name="closure.compiler.class.name"value="com.google.javascript.jscomp.CommandLineRunner" />
                  <echo message="Generate main.min.js" />
         	      <path id="maven.lib.dep" path="${com.google.javascript:closure-compiler:jar}"/>  
         	      <java classname="${closure.compiler.class.name}"
                      classpathref="maven.lib.dep" fork="true" failonerror="true">
                  <arg value="--js"/>
                  <arg value="${basedir}/src/main/webapp/js/main.js"/>
                  <arg value="--js_output_file"/>
                  <arg value="${basedir}/src/main/webapp/js/main.min.js" />
                  <arg value="--compilation_level"/>
                  <arg value="SIMPLE_OPTIMIZATIONS"/>
                </java>
              </target>
            </configuration>
          </execution>
       </executions>
     </plugin>

    指定classpathref参数

  • 相关阅读:
    倒水问题(BFS)
    小程序整理
    微信小程序--录音
    mpvue
    hbuilder 打包 vueAPP
    react rem
    react 关闭eslint 配置
    react axios 配置
    react 路由之react-router-dom
    react mobx 装饰器语法配置
  • 原文地址:https://www.cnblogs.com/xiaopen/p/5414864.html
Copyright © 2020-2023  润新知