【问题标题】:Error with Ant build copying files, "Access is denied"Ant 构建复制文件时出错,“访问被拒绝”
【发布时间】:2014-05-30 12:39:42
【问题描述】:

我的 Ant 构建中出现了一个奇怪的错误。构建是这样工作的:build.xml 调用一个新的 buildTargets.xml 文件,并且在该文件中完成了大部分工作。 buildTargets.xml 在 gwt-out/htdocs/** 和另一个目录 staging/htdocs/** 中创建了一堆新文件。基本上,文件是在 gwt-out/htdocs 中创建的,然后复制到 staging/htdocs 中。错误是只有一个文件没有被复制,并且我收到 java.IO.FileNotFoundException (Access is denied) 错误。奇怪的部分是文件从构建更改为构建。

起初我认为这是一个 Eclipse 问题,所以我通过命令行构建了一个新的(与 eclipse 不同的文件)没有被放入 staging/htdocs,这产生了同样的错误。我已经用 -debug 标志附加了 Ant 所说的内容。在 buildTargets.xml 中对文件进行标记时,似乎会弹出错误。在四处搜索之后,似乎最常见的响应是修复我的权限 - 但是文件是动态创建的,当我去检查该文件时,所有权限都已启用(“特殊”除外),所以我没有认为这就是问题所在。

与我的类似的其他 SO 问题都涉及在远程服务器上构建并修复我对该服务器的权限 - 但是这都是我的计算机本地的,所以我也不确定这是否是问题。会不会是 Ant 构建中的复制任务出错?

这是错误:

BUILD FAILED
C:\CSDK\build\buildTargets.xml:253: Failed to copy C:\Users\admin\worksp
ace\BuildPortal\out\gwt-out\htdocs\war\BuildPortalTest.iOS_Bu
ild_Portal\sc\modules\ISC_DataBinding.js to C:\Users\admin\workspace\BuildPortal
\out\staging\htdocs\war\BuildPortalTest.iOS_Build_Portal\sc\m
odules\ISC_DataBinding.js due to java.io.FileNotFoundException C:\Users\admin\wo
rkspace\BuildPortal\out\staging\htdocs\war\BuildPortalTest.iO
S_Build_Portal\sc\modules\ISC_DataBinding.js (Access is denied)
        at org.apache.tools.ant.taskdefs.Copy.doFileOperations(Copy.java:907)
        at org.apache.tools.ant.taskdefs.Copy.execute(Copy.java:563)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.io.FileNotFoundException: C:\Users\admin\workspace\BuildPortal\o
ut\staging\htdocs\war\BuildPortalTest.iOS_Build_Portal\sc\mod
ules\ISC_DataBinding.js (Access is denied)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)

谢谢。

【问题讨论】:

  • 您的机器上是否运行了防病毒软件?某些防病毒软件可能会将快速创建和删除文件视为“可疑活动”。此外,防病毒软件可能会配置为在创建文件时扫描文件,因此您的 Ant 构建可能会在防病毒软件完成之前尝试删除文件。
  • 我确实知道。它是Symantec Antivirus,我知道就防病毒软件而言,它通常被认为是最“霸道”的……我会尝试将其关闭。谢谢。
  • 我最终做的(如果有人发现这个奇怪的特定错误)是在 Isaac 评论它可能是 AV 之后,我决定“继续重试”,这在迄今为止的每个构建中都有效——通过围绕有问题的代码添加重试任务。我将它设置为大约 30 次重试,从那以后它就没有失败过。总的来说,如果没有 Isaac 的帮助,我不会想到解决方案(我以前从未编写过构建脚本)。

标签: java gwt ant build copy


【解决方案1】:

我最终使用了retry task,根据 Isaac 对可能出现问题的描述,这似乎有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多