Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ant中的mkdir失败。我如何处理这个错误_Java_Ant_Mkdirs - Fatal编程技术网

Java ant中的mkdir失败。我如何处理这个错误

Java ant中的mkdir失败。我如何处理这个错误,java,ant,mkdirs,Java,Ant,Mkdirs,我拥有的ANT构建脚本执行以下操作: 在Windows server上执行构建并压缩二进制文件 使用net use 我正在使用在安装的驱动器上创建一个目录(P:) 将二进制文件复制到该驱动器 下面是我的mkdir <echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo> <mkdir dir="P:\build_output\${buildRequesterUserId

我拥有的ANT构建脚本执行以下操作:

  • 在Windows server上执行构建并压缩二进制文件
  • 使用
    net use
  • 我正在使用
    在安装的驱动器上创建一个目录(P:)
  • 将二进制文件复制到该驱动器
  • 下面是我的
    mkdir

    <echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo>
    <mkdir dir="P:\build_output\${buildRequesterUserId}"/>
    <echo>Creating ${buildRequesterUserId} folder at mirroring site ends</echo>
    
    开始在镜像站点创建${buildRequesterUserId}文件夹
    在镜像站点端创建${buildRequesterUserId}文件夹
    
    有时文件夹的创建工作正常,有时失败,出现以下错误

    由于未知原因,
    创建未成功
    ,并导致生成失败

    这个错误是随机发生的。Mkdir有时会工作。我不确定它为什么会失败,也不确定它是否是因为网络延迟

    另外,我试图创建的目录可能已经存在,也可能不存在。我读到,如果目录已经存在,mkdir不会做任何事情

    我检查过了,mkdir没有
    failonerror
    。我不希望构建因此而失败

    我已经处理了
    copy
    部分中的错误,但不确定如何处理此
    mkdir

    <echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo>
    <mkdir dir="P:\build_output\${buildRequesterUserId}"/>
    <echo>Creating ${buildRequesterUserId} folder at mirroring site ends</echo>
    
    我怎样才能做到这一点?任何帮助都将不胜感激

    问候


    Karthik

    ApacheAnt
    Mkdir
    任务正在调用
    File.mkdirs()
    方法,该方法是

    File.mkdirs()

    在远程文件系统的情况下,您的主机很有可能在“代码>文件.MKDRISS())/代码>操作的中间意识到文件系统的更改,但失败了。 Ant似乎试图将其修复为

    Mkdir
    中的代码从此处更改

    在这方面

    那么升级到最新的Ant可能会有所帮助

    如果没有-可以使用您自己的
    execute()
    方法实现创建一些蛮力
    Mkdir
    任务扩展


    如果没有-来自Ant Contrib将起作用。

    以下是我解决问题的方法:

  • 打开build.properties文件(实际打开所有属性文件) 引用自build.xml)
  • 检查文件任何一行的尾随空格和制表符
  • 在文件末尾添加一个额外的空行

  • 您可以使用复制任务来创建目录(包括子目录)。

    对于我来说,1.9版的ant也有类似的问题

    我正在删除一个目录并立即重新创建它:

    <delete dir="${jar.dir}"/>
    <mkdir dir="${jar.dir}"/>
    
    
    
    即使目录是本地的(不是网络驱动器),在两次操作之间添加1秒的睡眠也解决了我的问题:

    <delete dir="${jar.dir}"/>
    <sleep seconds="2"/>
    <mkdir dir="${jar.dir}"/>
    

    对于我来说,在linux中解决这个问题就像运行sudo用户一样简单


    “sudo ant”

    如果您不介意,请您对我的答案发表评论,并描述它的哪一部分为您解决了问题(如果它真的解决了问题:)您有写权限吗?升级ant。我测试了1.7倍,但仍然失败。我没有尝试过TryCatch,因为我没有AntContrib。但我认为这也将有助于我捕获错误他说更改是在1.8.0和1.8.2之间,因此升级到1.7.x不会有帮助…我可以知道这背后的原因吗?
    <delete dir="${jar.dir}"/>
    <sleep seconds="2"/>
    <mkdir dir="${jar.dir}"/>