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, ??t???ò)??? 然后后面有一堆乱码,然后经过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参数

时间: 2024-08-25 19:53:31

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

Jenkins报错Caused: java.io.IOException: Cannot run program &quot;sh&quot; (in directory &quot;D:\Jenkins\Jenkins_home\workspace\jmeter_test&quot;): CreateProcess error=2, 系统找不到指定的文件。

想在本地执行我的python文件,我本地搭建了一个Jenkins,使用了execute shell来运行我的脚本,发现报错 [jmeter_test] $ sh -xe D:\tomcat\apache-tomcat-8.5.20\temp\jenkins4583980269774421650.sh The system cannot find the file specified FATAL: command execution failed java.io.IOException: Crea

Cannot run program “git.exe”: createprocess error=2,系统找不到指定的文件

Android Studio提供VCS(Version Control System)版本控制系统,默认情况使用Git.GitHub工具需要配置git.exe路径,否则提示“cannot run program git.exe createprocess error=2 系统找不到指定的文件”的错误,如下图: 点击查看详情

Gradle &#39;MYasprj&#39; project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容

Gradle ‘MYasprj’ project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容.请查看计算机的系统信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序,然后联系软件发布者. 解决方案: 你开发项目的引用Javajdk,与本机安装的Java jdk版本不一致,打开项目后,在project structure里面更改一下本机的真实的java jdk路径.  Gr

Hadoop在Windows系统的Eclipse下运行Cannot run program &quot;chmod&quot;: CreateProcess error=2解决办法

运行hadoop程序报错如下: Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2 解决方法: 只需要把cygwin的bin目录加到windows的用户环境变量中就可以了,然后需要重启eclipse

ProcessBuilder异常CreateProcess error=2, ??&#213;?&#187;&#181;&#189;?&#182;

后面那堆乱码使我知道只好用谷歌去查一下问题答案,翻着翻着就有了启发. 首先自己在捣鼓如何获取APK信息,然后了解了一下ProcessBuilder类,具体这个类如何获取APK信息,我另外写了一篇分析这个类的文章: public class TestProcess { public static void main(String[] args) { ProcessBuilder pb = new ProcessBuilder(); pb.redirectErrorStream(true); try

解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)

当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误: public static void main(String [] args) throws IOException { ProcessBuilder builder = new ProcessBuilder(); Process process = builder.command("dir d:\\").start(); InputStream inputStream = process.g

Github上LeakCanary编译报错CreateProcess error=2的解决方法

现象说明: 从github上拉下LeakCanary编译时报错 1 CreateProcess error=2, ??Õ?»µ½?¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd.exe /C导致Windows无法识别命令 解决方案: 定位到报错的gradle代码为leakcanary-android模块的build.gradle中的gitSha()方法,修改代码为: 1 def gitSha() { 2 return 'cmd.exe /C git rev-parse

Cannot load supported formats: Cannot run program &quot;svn&quot;: CreateProcess error=2

svn CreateProcess error=2, 系统找不到指定的文件 IntelliJ IDEA 13.1.2安装后,SVN checkout时候会出现如下错误: Cannot load supported formats: Cannot run program "svn": CreateProcess error=2, μ 究其原因,是SVN使用了命令行工具,如果本地没有SVN的命令行工具,则导致出错. 解决办法: 1.安装客户端 http://ncu.dl.sourcefor

IDEA 安装完码云插件,运行报“Cannot run program &quot;xxx&quot;:CreateProcess error=2,系统找不到指定的文件”

错误:Cannot run program "E:\Program Files\Git\bin\git.exe":CreateProcess error=2,系统找不到指定的文件 解决方法: 1.首先要保证电脑上已经安装了git 2.Ctl+Alt+S