程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> CreateProcess error=206, The filename or extension is too long"的一個解決方案,filenametoolong

CreateProcess error=206, The filename or extension is too long"的一個解決方案,filenametoolong

編輯:JAVA綜合教程

CreateProcess error=206, The filename or extension is too long"的一個解決方案,filenametoolong


在實際項目中我使用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參數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved