【问题标题】:Disabling error message dialog when running Eclipse in headless mode?在无头模式下运行 Eclipse 时禁用错误消息对话框?
【发布时间】:2012-01-21 14:41:47
【问题描述】:

我正在尝试在我们的构建过程中通过无头 Eclipse 执行 JUnit 测试。单元测试是从 Ant 脚本调用的,使用以下命令:

eclipsec.exe -noSplash -application org.eclipse.ant.core.antRunner -data "C:\SomeDirectory" -buildfile "C:\Path\To\tests.xml"

这很好用,除非 Ant 脚本因任何原因需要失败(通过显式任务,因为单元测试失败,或者因为单元测试在上游抛出异常)。在任何一种情况下,eclipsec 都会引发一个对话框来报告“发生错误”。这伴随着一个例外。堆栈跟踪的顶部(如果相关)是:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.ant.core.AntRunner.run(AntRunner.java:513)
    at org.eclipse.ant.core.AntRunner.start(AntRunner.java:600)

我并不真正关心 Ant 脚本或 Eclipse 失败的原因——这就是日志记录的原因——但随之弹出的对话框是不可接受的,因为它在等待时会挂起我们的持续集成系统让隐形用户来点击它。

有什么方法可以抑制这个对话框?有没有什么方法可以绕过这个不需要真实用户响应的对话框?

附加信息:

Eclipse 版本:Indigo(昨天最新)。它内部的 Ant 和 JUnit。

Java 版本:JDK 6.0_30 32 位

操作系统:Windows(7 和 Server 2003)

【问题讨论】:

  • 这显然也发生在我的 CodeWarrior 身上。

标签: java eclipse ant junit messagebox


【解决方案1】:

如果您使用 ErrorDialog 的子类,则有一个名为 AUTOMATED_MODE 的静态变量,您可以将其设置为 true。

原来(参见下面的 cmets)错误来自包装程序 exclipsec。查看此处的命令行选项:http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html 在命令行上指定 --launcher.suppressErrors 将避免此对话框(注意双破折号)。

【讨论】:

  • 这看起来很有希望,但我要么不知道如何应用它,要么在这种情况下不起作用。我尝试在新的 JUnit 测试中设置它会失败,但它不会阻止 Eclipse 错误对话框。错误抑制需要在 Ant 层或 eclipse 层发生,但我不知道是哪个,或者如何做。
  • 当发生时,获取堆栈转储(在 Linux 上为 kill -3),这样您就可以准确地看到正在发生的对话框。它可能不是 ErrorDialog 的子类(可能不是)。在这种情况下,您将需要从堆栈跟踪中查看发生了什么并添加您自己的代码以防止对话框显示。
  • Linux(也可能是 Mac)上的另一种选择是使用虚拟帧缓冲区并将您的 DISPLAY 重定向到该缓冲区 (xvfb)。我不知道 Windows 的等效项。
  • 能否提供对话框截图?也许做一个堆栈转储的pastebin,我可以看看?
  • 您可能想看看 eclipsec 上是否有一个命令行选项可以防止它弹出对话框(可能在某种无头模式下运行)。看看这里:help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
相关资源
最近更新 更多