Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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 builder集成到Eclipse中:错误“;变量引用空选择“;_Java_Eclipse_Ant - Fatal编程技术网

Java 将Ant builder集成到Eclipse中:错误“;变量引用空选择“;

Java 将Ant builder集成到Eclipse中:错误“;变量引用空选择“;,java,eclipse,ant,Java,Eclipse,Ant,我在EclipseJDT项目中有一些Ant任务,我希望在每次编译之前执行这些任务,因此我在EclipseBuilder配置中添加了一个Ant构建器。作为构建文件的位置,我输入 ${workspace_loc:${project_path}/build.xml} 我不想在这里有任何绝对路径或项目名称。Eclipse配置是存储库的一部分,其他用户使用不同的文件系统布局和可能不同的Eclipse项目名称来检查这一点。例如,我的Eclipse工作区中通常有同一项目的多个工作副本,当然每个副本都有不同的

我在EclipseJDT项目中有一些Ant任务,我希望在每次编译之前执行这些任务,因此我在EclipseBuilder配置中添加了一个Ant构建器。作为构建文件的位置,我输入

${workspace_loc:${project_path}/build.xml}
我不想在这里有任何绝对路径或项目名称。Eclipse配置是存储库的一部分,其他用户使用不同的文件系统布局和可能不同的Eclipse项目名称来检查这一点。例如,我的Eclipse工作区中通常有同一项目的多个工作副本,当然每个副本都有不同的项目名称

这在大多数情况下都有效。但是,我有时会在对话框中收到以下错误消息:

生成过程中出现错误。
在项目“MyProjectName”上运行生成器“集成外部工具生成器”时出错。
变量引用空选择:${project\u path}
变量引用空选择:${project\u path}

当Eclipse在PackageExplorer中没有选择任何项目资源的情况下决定构建项目时,似乎会发生这种情况。我可以通过在项目中创建一个虚拟文件、在Eclipse外部删除该文件、在Eclipse中选择它并按F5来复制它。Eclipse将注意到该文件不再存在,将其从PackageExplorer中删除(因此不再选择任何内容),然后生成项目,并给出错误消息

虽然每次编译都运行Ant任务并不是很重要,但我不希望有这样一个会让用户感到困惑的错误消息框

那我怎么办

  • 以不同的方式引用build.xml文件,以解决问题,或者
  • 解决问题,或者
  • 是否抑制此特定错误的错误对话框

任何帮助都将不胜感激。我使用的是Eclipse3.7(Indigo)。

显然,它在转换对内部变量(${project\u path})的引用时遇到问题。。。对变量(${workspace\u loc})的引用

您可以改用${build\u project}变量

${build_project:/build.xml}

我希望这会有所帮助。

您在Eclipse的UI中遇到了一些不便。逻辑告诉您,当您打开一个项目时,应该填充与打开的项目相关的变量。 但它们不是,因为由于一个bug或其他原因,在焦点转移到其他地方后,代码杀死了它们

因此,作为一种解决方法,您可以:

  • 将完整路径放入xml文件
  • 在启动外部工具之前,单击左侧项目(在project Explorer视图中)上的,然后按启动按钮
  • 单击项目(文件夹图标)将填充变量


    顺便说一句,我认为
    ${workspace\u loc}${project\u path}/build.xml
    没问题。

    谢谢你的回答,不幸的是它没有帮助。使用
    ${project\u loc:/build.xml}
    时,每个构建都会出现错误消息,因此路径似乎根本不正确。好的,我签出了它,该路径对我有效:${workspace\u loc}/${project\u path}/build.xml抱歉,它对我无效。然而,您使用其他变量的想法非常好,我找到了
    build\u项目
    变量,这似乎正是我要找的(不知道为什么我现在才错过它)。使用
    ${build\u project:/build.xml}
    它可以正常工作。请更新您的答案,以便我可以接受它。此解决方案将此问题更改为“在项目“xyz”上运行生成器“CDT builder”时出错……资源“/xyz/Debug/gen”不存在”。但如果在包资源管理器上选择了该项目,此解决方案仍能正常工作。对于记录,通过将“生成器-编辑配置-刷新:”从“包含所选资源的项目”更改为“特定资源”->“选择列表上的项目文件夹”,解决了此问题,尽管这些选项似乎是等效的。感谢您的回答。不幸的是,这对我没有帮助,因为(正如我所说)我不能使用完整路径(文件在存储库中),这不是关于手动启动工具,而是关于(自动)项目构建,所以Eclipse决定何时执行此操作,而不是我。然而,来自EFT的答案是正确的并且有效的,因此不需要采取变通办法。这里的步骤2为我解决了这个问题。出于某种原因,如果焦点在编辑器视图中,则调试时不会填充${project\u loc}。启动前立即在project Explorer视图中单击项目,修复了建议的问题。谢谢直到2015年,任何人都无法解决此问题:-(当我更改代码后想要重新运行失败的单元测试时,我总是遇到这种问题。@Thomas:同意。我使用${project\u loc}在启动配置中,作为VM命令行参数的一部分。启动配置明确分配给eclipse项目。但是,当project explorer中的另一个项目具有焦点时,启动配置时会出现错误,并且在正确的项目具有焦点时会工作。这并不是人们所期望的