Eclipse v4.7.1a:ant build broken:启动配置<build.file>引用不存在的项目<container project =“”>

时间:2017-10-23 01:27:07

标签: eclipse ant

似乎自从eclipse v4.7.1a(全新安装)以来,不再可能执行任何ant构建。 每次失败时都会显示以下消息:

Launch configuration <name of build file> references non-existing project <name of the containing project>

我们已经使用许多不同的配置(eclipse-jee,eclipse-rcp ...)对它进行了测试,每次都进行全新的v4.7.1a安装。
经过进一步调查后,只有当build.xml文件不在“java”类项目下时才会出现这种情况,这就是我们所有工作区的情况(30 + ...)。 一切都与v4.7.0一起运作良好 在.log文件中,我们可以看到:

java.net.SocketException: Socket operation on nonsocket: configureBlocking
  at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method)
  at java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source)
  at java.net.AbstractPlainSocketImpl.accept(Unknown Source)
  at java.net.PlainSocketImpl.accept(Unknown Source)
  at java.net.ServerSocket.implAccept(Unknown Source)
  at java.net.ServerSocket.accept(Unknown Source)
  at org.eclipse.ant.internal.launching.launchConfigurations.RemoteAntBuildListener$ServerConnection.run(RemoteAntBuildListener.java:89)

!ENTRY org.eclipse.jdt.launching 4 107 2017-10-22 21:19:26.676
!MESSAGE Launch configuration org.titou10.jtb.build build.xml references non-existing project org.titou10.jtb.build.

[UPDATE]
如果build.xml文件位于Java项目中。 Everyhting和以前一样正常 如果build.xml文件位于常规项目或EAR项目(我们的案例)中,则它不起作用...
似乎有一种方法可以使它在这些情况下起作用:

  1. 右键单击build.xml
  2. Run As - &GT; Ant Build... - &GT;选择“JRE”标签
  3. 勾选“Run in the same JRE as the workspace”...
  4. 它和以前一样工作......

    这显然是以前版本的回归......

2 个答案:

答案 0 :(得分:4)

是的,你是对的,它是一个Eclipse的错误:

Eclipse bug 522581 - Cannot run ant build file from generic project

该错误是在Oxygen.0(4.7.0)中引入的,可能是内置Ant框架的更新。此错误的修复 计划于2017年12月20日的Oxygen.2(4。7。2)

正如您自己在问题中所描述的那样, 在与工作区相同的JRE中运行 可以使用作为解决方法

答案 1 :(得分:0)

将现有的 Eclipse 项目复制到新机器后,我遇到了非常类似的错误。在这种情况下,JRE 不再存在(它在以前的计算机上有不同的路径)。

我对上面的答案有点困惑(但可能是我的错,因为我没有正确阅读问题的更新,也没有看到它包含答案)。

我可以使用与工作区相同的 JRE,或者只需选择另一个 JRE。

要到达那里,在 Eclipse 项目资源管理器中右键单击 build.xml 文件,然后选择 Ant Build...(确保它是带有省略号的那个)

我能够像这样使用相同的 JRE 作为工作区

Same JRE as workspace

...或者只是选择另一个 JRE,如您在此处所见。

With another JRE