【问题标题】:Pharo3.0 headless image with RFB/VNC enabled启用 RFB/VNC 的 Pharo3.0 无头图像
【发布时间】:2015-02-10 15:39:04
【问题描述】:

请在下面找到我用来在 mac 上运行 pharo seaside image headless 的脚本。其pharo3.0镜像下载用于mac os。

 #!/bin/bash



RT="$PWD/Pharo3.0.app/Contents"

#exec $0 "$RT/MacOS/Pharo"    "$RT/Resources/Pharo3.0.image"

exec "$PWD/Pharo3.0.app/Contents/MacOS/Pharo" --headless --nohandlers "$PWD/Pharo3.0.app/Contents/Resources/Pharo3.0.image" --no-default-preferences --no-quit

该脚本与 Pharo3.0.app 位于同一文件夹中,并且执行得非常好。

1) 谁能验证这一点并让我知道我是否以正确的方式开始部署无头映像?

我还在映像中设置了一个 RFB 服务器以进行调试。当我连接到它并右键单击时,我收到以下错误

RFB: caught ConnectionClosed: Connection close while waiting for data.SubclassResponsibility: NonInteractiveUIManager had the subclass responsibility to implement #newMenuIn:for:

NonInteractiveUIManager(Object)>>subclassResponsibility

NonInteractiveUIManager(UIManager)>>newMenuIn:for:

PluggableTextMorph(ScrollPane)>>getMenu:

PluggableTextMorph>>yellowButtonActivity:

SmalltalkEditor(TextEditor)>>mouseUp:

TextMorphForEditView(TextMorph)>>mouseUp: in Block: [ editor mouseUp: evt ]

TextMorphForEditView(TextMorph)>>handleInteraction:

TextMorphForEditView>>handleInteraction:

TextMorphForEditView(TextMorph)>>mouseUp:

TextMorphForEditView>>mouseUp:

TextMorphForEditView(Morph)>>handleMouseUp:

MouseButtonEvent>>sentTo:

TextMorphForEditView(Morph)>>handleEvent:

TextMorphForEditView(Morph)>>handleFocusEvent:

HandMorph>>sendFocusEvent:to:clear: in Block: [ ...

BlockClosure>>on:do:

WorldMorph(PasteUpMorph)>>becomeActiveDuring:

HandMorph>>sendFocusEvent:to:clear:

HandMorph>>sendEvent:focus:clear:

HandMorph>>sendMouseEvent:

HandMorph>>handleEvent:

MouseClickState>>handleEvent:from:

HandMorph>>handleEvent:

HandMorph>>processEvents

WorldState>>doOneCycleNowFor: in Block: [ :h | ...

Array(SequenceableCollection)>>do:

WorldState>>handsDo:

WorldState>>doOneCycleNowFor:

WorldState>>doOneCycleFor:

WorldMorph>>doOneCycle

请让我知道我做错了什么。

TIA,

图夏

【问题讨论】:

    标签: macos pharo headless


    【解决方案1】:

    我觉得不错。

    RFB 的问题实际上不是 RFB 本身,而是NonInteractiveUIManager。该类应该实现#newMenuIn:for:。我的建议:您不应该将NonInteractiveUIManager 与 RFB 一起使用。当您启动 RFB 时(或者,当您收到连接时),您应该执行以下操作:

    UIManager default: MorphicUIManager new.
    "let the connection run, when it's done, use the other one:"
    UIManager default: NonInteractiveUIManager.
    

    当您不与图像交互时,您应该恢复到 NonInteractiveUIManager,以确保您没有在无头图像中弹出窗口、对话框和调试器。

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多