当前位置: 首页 > 知识库问答 >
问题:

GradleWindowsJava。木卫一。IOException:CreateProcess错误=206,文件名太长

盖博简
2023-03-14

gradle提供了两种解决windows路径过长问题的解决方案:

  • 使用Gradle在清单中添加类路径
  • 使用gradle时出现“文件名或扩展名太长错误”

然而,我不清楚如何在多项目设置中处理这一点。所有带有应用程序插件的子项目都需要这些更改吗?这也可以在init.gradle文件中指定吗?

还有更好的解决方法吗?

显然地https://github.com/viswaramamoorthy/gradle-util-plugins/已经出版了。然而,它并没有为我解决问题。最初的java问题已经解决了,但没有得到正确的解决。某些类无法再加载,即在scala情况下无法执行单元测试。

experimenting with
task testPathingJar(type: Jar) {
        appendix = "testPathing"
        doFirst {
            manifest {
            attributes "Class-Path": configurations.testCompile.files.join(" ")
            }
        }
    }

    compileTestScala {
        dependsOn(testPathingJar)
        classpath = files(testPathingJar.archivePath)
    }    

    task pathingJar(type: Jar) {
        appendix = "pathing"
        doFirst {
            manifest {
            attributes "Class-Path": configurations.compile.files.join(" ")
            }
        }
    }

    compileScala {
        dependsOn(pathingJar)
        classpath = files(pathingJar.archivePath)
    }    

    build {
        dependsOn pathingJar
        doFirst {
            classpath = files("$buildDir/classes/main", "$buildDir/resources/main", pathingJar.archivePath)
        }
    }

不幸的是,在shadowJar期间失败,因为在几个链接中报告的清单技巧似乎与scala有关:

Cannot infer Scala class path because no Scala library Jar was found. Does project ':tma-mobility-frequencyCounting' declare dependency to scala-library? Searched classpath: file collection.

尝试:

    jar {
      manifest {
        attributes(
          "Class-Path": configurations.compileOnly.collect { it.getName() }.join(' '))
      }
    }
fails for task `shadowDistZip` when executing `gradle build` with:

    java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_131\bin\java.exe" (in directory "D:\users\username\development\projects\projectName\Code\spark\module_name"): CreateProcess error=206, Der Dateiname oder die Erweiterung ist zu lang

moving gradle user home to the root (also the project) of the partition:

    .\gradlew.bat build --gradle-user-home D:\projects\gradleHome
fails with the same error for task `test`.

When trying the strategy of https://github.com/jhipster/generator-jhipster/pull/4324/files like:

task pathingJar(type: Jar) {
    dependsOn configurations.runtime
    appendix = 'pathing'

    doFirst {
        manifest {
            attributes 'Class-Path': configurations.runtime.files.collect {
                it.toURL().toString().replaceFirst(/file:\/+/, '/')
            }.join(' ')
        }
    }
}

build {
    dependsOn pathingJar
    doFirst {
        classpath = files("$buildDir/classes/main", "$buildDir/resources/main", pathingJar.archivePath)        }
}

task pathingJarTest(type: Jar) {
    dependsOn configurations.runtime
    appendix = 'pathing'

    doFirst {
        manifest {
            attributes 'Class-Path': configurations.runtime.files.collect {
                it.toURL().toString().replaceFirst(/file:\/+/, '/')
            }.join(' ')
        }
    }
}

test {
    dependsOn pathingJarTest
    doFirst {
        classpath = files("$buildDir/classes/main", "$buildDir/resources/main", pathingJarTest.archivePath)        }
}

失败于

Caused by: org.gradle.api.GradleException: There were failing tests. See the report at: file:///C:/tmp/projectName/moduleName/reports/tests/test/index.html

即使从未创建过此文件

再试一件事:一个包含所有测试用例的胖罐子:

task fatTestJar(type: Jar) {
    baseName = project.name + '-test-all'
    from {
        from { configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) }}
        from sourceSets.test.output
    }
    with jar
}

然而,这还没有编译。

共有1个答案

常英资
2023-03-14
test {
  doFirst {
    def cp = CollectionUtils.join(File.pathSeparator, classpath.getFiles())
    environment 'CLASSPATH', cp
    classpath = classpath.filter { false }
  }
}

从…起https://github.com/maiflai/gradle-scalatest/issues/63是解决问题的下一步。

 类似资料:
  • 最初是gradle windows java。伊奥。IOException:CreateProcess error=206,文件名太长是一个很好的解决方案。然而,对于gradle 5: 失败于 gradle 5.0的合适修复方案是什么? 至少对我来说:https://github.com/viswaramamoorthy/gradle-util-plugins/在gradle 5.0上也会出现同样

  • 问题内容: 我知道这个问题以前曾被问过,但是我无法使用其他帖子中的解决方案来解决。我正在尝试使用Maven编译gwt项目的复杂层次结构。一切正常,直到我不得不再添加一个库,更具体地说:org.eclipse.birt.runtime 现在我得到这个错误: 我正在使用的依赖项是: 问题答案: 我终于设法解决了: 事实证明birt及其依赖项只是添加了太多的库,而classpath变得对于Windows

  • 我正在运行一个gradle任务 进口。gradle,有一个mlcp任务,我们正在传递一个任务名。json(所有查询都以json格式写入,以从输入主机获取数据)位于字段中。 在运行任务时,我得到: 原因:java。伊奥。IOException:无法运行程序“C:\program Files\Java\jdk1.8.0_211\bin\Java.exe”(在目录“D:\Data1”中):CreateP

  • 问题内容: 我在日食日光灯中遇到此错误: 执行命令行时发生异常。无法运行程序“ C:\ Program Files(x86)\ Java \ jre6 \ bin \ javaw.exe”(在目录“ C:\ Users \ motiver \ helios_workspace \ TimeTracker”中):CreateProcess错误= 206,文件名或扩展名是太长 我进行了一些研究,但大多

  • 我在eclipse helios中有一个错误: 执行命令行时发生异常。无法运行程序“C:\program Files(x86)\Java\jre6\bin\javaw.exe”(在目录“C:\Users\motiver\helios_workspace\TimeTracker”中):CreateProcess error=206,文件名或扩展名太长 我做了一些研究,但大多数问题都与使用谷歌应用引擎

  • 我的项目路径: Java版本:JDK7 update 21(由于项目限制,我无法使用任何其他版本) 构建工具:蚂蚁,Gradle IDE: IntelliJ 17.3, 操作系统:Windows 10。 尝试过但对我无效链接: 1) CreateProcess error=206,运行main()方法时文件名或扩展名太长 2) Createprocess错误=206;文件名或扩展名太长 3) ht