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

在gradle中运行mlcp,结果是:java。伊奥。IOException:CreateProcess error=206,文件名或扩展名太长

朱通
2023-03-14

我正在运行一个gradle任务

gradlew -b import.gradle copy_taskName -PinputHost="Host1" -PoutputHost="Host2" -Pduration=1 --stacktrace

进口。gradle,有一个mlcp任务,我们正在传递一个任务名。json(所有查询都以json格式写入,以从输入主机获取数据)位于query_filter字段中。

在运行任务时,我得到:

原因:java。伊奥。IOException:无法运行程序“C:\program Files\Java\jdk1.8.0_211\bin\Java.exe”(在目录“D:\Data1”中):CreateProcess error=206,文件名或扩展名在网络上太长。红柚。站台内部的DefaultProcessLauncher。开始(DefaultProcessLauncher.java:25)。。。还有5个原因:java。伊奥。IOException:CreateProcess error=206,文件名或扩展名太长。。。还有6个

当我从taskName.json中删除一些查询时,我没有遇到任何问题。我想知道,在taskN中编写的查询的大小或数量ame.json是否有任何限制,我们应该传入query_filter参数来运行mlcp任务?

taskName中查询内容行的总数。json是398

任务名。json文件内容示例

{
    "andQuery": {
        "queries": [{
            "collectionQuery": {
                "uris": ["collection1"]
            }
        },
        {
            "orQuery": {
                "queries": [
                {
                    "elementValueQuery": {
                        "element": ["{http://namespace.com/a/b}id"],
                        "text": ["text1"],
                        "options": ["lang=en"]
                    }
                },
                {
                    "elementValueQuery": {
                        "element": ["{http://namespace.com/a/b}id"],
                        "text": ["text2"],
                        "options": ["lang=en"]
                    }
                }]
            }
        },
        {
            "notQuery": {
                "query": {
                    "elementRangeQuery": {
                        "element": ["{http://namespace.com/a/b}date"],
                        "operator": ">",
                        "value": [{
                            "type": "dateTime",
                            "val": "%%now%%"
                        }]
                    }
                }
            }
        }]
    }
}

进口格拉德尔

def importDirs =  new File("./teams").listFiles()

importDirs.each { importDir ->
    def queries = importDir.listFiles()
    queries.each { file ->
        def taskname = importDir.name + "_" +file.name.replace('.json', '')        
        task "copy_$taskname" (
                    type: com.marklogic.gradle.task.MlcpTask,
                    group: 'abc',
                    dependsOn: []) {            
                classpath = configurations.mlcp
                command = 'COPY'
                input_database = mlAppConfig.contentDatabaseName
                input_host = inputHost
                input_port = port
                input_username = inputUsername
                input_password = inputPassword
                output_database = mlAppConfig.contentDatabaseName
                output_host = outputHost
                output_port = port
                output_username = outputUsername
                output_password = outputPassword
                query_filter = file.text.replaceAll('"','\\\\"').replaceAll('%%now%%', now).replaceAll('%%targetDate%%', targetDate)
                max_split_size = 500                   
        }
    }
}

共有1个答案

尉迟彬
2023-03-14

MlcpTask正在扩展Gradle的JavaExec任务,错误来自网络。红柚。站台内部的DefaultProcessLauncher类。所以我的直觉是既然任务的内容。json被扔进了命令行参数中,JavaExec类中的一些限制已经达到。您可以尝试扩展JavaExec来确认这一点——我想您也会遇到同样的错误。

一个可能的解决方案是使用MLCP选项\文件选项。因为你正在参数化任务的内容。json,您可能需要动态生成该文件的内容,大概是在每个Gradle任务的第一个块中。但这将避免很长的命令行参数,因为您将把它们放入选项文件中——您可能只需要在其中放入查询过滤器。

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

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

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

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

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

  • 在将添加到构建中并从junit4迁移所有内容后,Gradle开始出现以下错误。 在老式运行器中所有运行都很好,但junit5测试不是。 我很好奇我是否可以在项目评估后删除这个配置,因为无论如何都添加了所有JUnit依赖项来编译代码,然后插件只是在顶部添加负载。我创建了一个项目,将所有Junit5库封装在一个人工制品中。 编辑3 我确实设法将所有木星人工制品打包到1中,以稍微缩小cp,但我的类路径仍