【问题标题】:can't build a ant target in TFS location无法在 TFS 位置构建 ant 目标
【发布时间】:2012-09-25 02:19:18
【问题描述】:

我的 TFS 项目文件夹中有一个 ant 目标,xml 文件。项目文件夹与 TFS(Team Foundation Server)绑定。我的问题是,当我尝试通过在该 TFS 绑定位置运行 ant 目标来构建项目时,它会失败。它给出了以下失败。

> ria_ant_build.xml:435: Error running C:\Program Files\Java\jdk1.6.0_20\bin\javac.exe  compiler
        at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.
java:508)
        at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:61)
        at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1153)
        at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:930)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:392)
        at org.apache.tools.ant.Target.performTasks(Target.java:413)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
        at org.apache.tools.ant.Main.runBuild(Main.java:811)
        at org.apache.tools.ant.Main.startAnt(Main.java:217)
        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.IOException: Cannot run program "C:\Program Files\Java\jdk1.6.0_20\bin\javac.exe": CreateProcess erro
r=87, The parameter is incorrect
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
        at java.lang.Runtime.exec(Runtime.java:593)
        at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:862)
        at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:481)
        at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:495)
        at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.
java:505)
        ... 19 more
Caused by: java.io.IOException: CreateProcess error=87, The parameter is incorrect
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
        at java.lang.ProcessImpl.start(ProcessImpl.java:30)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
        ... 24 more

但是当我将项目复制到其他位置并从文件夹中删除只读属性时,ant 目标运行时没有任何错误,并且我得到了一个可部署的工件。 但即使当我从 TFS 文件夹中删除了只读属性,我无法构建 ant 目标。似乎问题存在于它自己的 TFS 位置。 :(

有人可以建议我解决这个问题的方法吗?我必须留在 TFS 位置你们知道我假设的原因:)

-- 感谢和问候, 兰加纳

【问题讨论】:

    标签: java web-applications ant tfs


    【解决方案1】:

    从您的问题中很难找出真正导致您的问题的原因。

    也许,您的 ant 调用长度太长了,甚至超过了最大命令提示行(在最新版本的 Windows 中为 8191 个字符)。正如问题Fail to launch application (CreateProcess error=87), can't use shorten classpath workaround 所说,您可以考虑“缩短文件夹名称,减少文件夹树的深度,使用参数文件等”。

    尝试使用 -debug 选项运行 ant,以查看 TFS 工作区中构建调用的特定命令行参数。这样您就可以估计通话的总时长。

    【讨论】:

    • 我收到错误 javac.exe 编译器,带有 -debug 选项;我能够看到这是一个“路径太长”的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多