【问题标题】:CreateProcess error=206, The filename or extension is too longCreateProcess 错误=206,文件名或扩展名太长
【发布时间】:2012-02-09 16:15:00
【问题描述】:

我正在尝试通过 Ant 调用 Findbugs,但收到此错误:

Cannot run program "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" (in 
directory "H:\Users\MyName\workspace\MyProject"): 
CreateProcess error=206, The filename or extension is too long

我该如何解决这个问题? o.O

【问题讨论】:

标签: ant findbugs


【解决方案1】:

我遇到了同样的问题。 我用过

<fileset dir="${basedir}/build">
  <include name="**/*.class"/>
</fileset>

在 findbugs 目标内部,似乎有太多 .class 文件要传递给 findbug(?通过命令行?),因为当我使用

<fileset dir="${basedir}/build/com/domain/package">
  <include name="**/*.class"/>
</fileset>

类数量少,错误消失了。

所以,我通过制作一个 jar 文件并将其提供给 findbugs 目标解决了这个问题

<findbugs home="${findbugs.home}">
  ...
  <class location="${basedir}/targets/classes-to-analyze.jar"/>
</findbugs>

【讨论】:

  • 我遇到了同样的问题,但&lt;jacoco:coverage&gt;&lt;junit&gt;。有一个 &lt;classpath&gt; 和一个 &lt;dirset&gt; 有很多很多类。我用&lt;jar destfile="${test.dist}/test-classes.jar"... 制作了一个JAR,并将&lt;classpath&gt; 更改为&lt;pathelement location="${test.dist}/test-classes.jar"/&gt;。然后就成功了!
【解决方案2】:

我认为当 java 尝试编译 clases 时,其中一个有效的文件路径真的很长。

一个值得尝试的方法是将代码库放在诸如 C:\MyProject 之类的目录中,而不是诸如 C:\Users\MyName\workspace\MyProject 之类的目录中

【讨论】:

    【解决方案3】:

    仅在启动调试模式时,我在 IntelliJ 上遇到了同样的错误。要解决的是我已经改变了:

    运行 > 编辑配置 > “配置”标签 > 缩短命令行

    “JAR 清单”

    【讨论】:

      【解决方案4】:

      要解决此问题,您需要生成 manifestclasspath 和路径 jar。

      首先生成你的类路径。

      <path id="javac.path">
          <fileset dir="lib/" includes="**/*.jar"/>
      </path>
      

      下一步生成清单类路径

      <target name="generate-manifest-classpath">
          <manifestclasspath property="manifest.classpath" jarfile="pathing.jar">
              <classpath refid="javac.path"/>
          </manifestclasspath>      
          <jar destfile="pathing.jar" basedir="${the location of your build classes}">
              <manifest>            
                  <attribute name="Class-Path" value="${manifest.classpath}"/>
              </manifest>
          </jar>
          <path id="javac.classpath">
              <pathelement path="pathing.jar"/>          
          </path>
      </target>
      

      下一步实现你的清单类路径

      <javac srcdir="${foo.dir}" destdir="${bar.dir}"
              <classpath refid="javac.classpath"/>
      </javac>
      

      如果正确实施,这将解决 206 错误消息。

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 2018-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        • 1970-01-01
        • 2016-11-24
        相关资源
        最近更新 更多