0

我的 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 位置你们知道我假设的原因:)

——感谢和问候,兰加纳

4

1 回答 1

1

从你的问题很难弄清楚是什么真正导致了你的问题。

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

尝试使用-debug选项运行ant ,以查看 TFS 工作空间内构建调用的特定命令行参数。通过这种方式,您可以估计通话的总长度。

于 2012-09-24T18:19:18.030 回答