0

我有一些严重的问题。我们在我们的应用程序中插入了我们的 eclipse rcp 客户端中的一个外部 ole 插件。这个插件在运行时会导致一些错误,然后杀死整个客户端。

由于我们无法解决问题,我们希望捕获该错误,以便客户端至少不会崩溃。更准确地说,客户端崩溃是因为 JVM 导致了致命错误。是否有可能抑制这些错误,以避免 JVM 崩溃?

这是我们在客户端中包含插件的代码,有人知道如何实现这样的错误捕获吗?

    // create OLE frame and site (XMAX control).
    clatFrame = new OleFrame(parent, SWT.NONE);
    clatUtil = null;
    try {
        clatSite = new OleControlSite(clatFrame, SWT.NONE,
                "Congree.XMax.Control");
        clatSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
        clatUtil = new OleUtil(clatSite);

        // setzt die Dialogsprache
        String dialogLanguage = Platform.getNL();
        // Umgehung für Bug-20760
        if (LOCALE_DE.equalsIgnoreCase(dialogLanguage)) {
            // ClatIn Format 'de-DE'
            dialogLanguage = dialogLanguage + "-DE"; //$NON-NLS-1$
        } else {
            dialogLanguage = dialogLanguage.replace("_", "-");
        }

        clatUtil.invokeMethod(null, "SetGuiLanguage", true, dialogLanguage);

        GridDataFactory.fillDefaults().hint(SWT.DEFAULT, 25).grab(true,
                false).align(SWT.FILL, SWT.TOP).applyTo(clatFrame);
    } catch (SWTException e) {
        clatFrame.dispose();
        LOG.warn("OLE control (CLAT) not installed");
    }

日志

http://www.file-upload.net/download-8284055/jvm_errorlog.log.html

4

1 回答 1

1

您可以尝试捕获 Throwable 而不是 SWTException。如果这没有帮助,您可以尝试使用不同的库(如 jacob)来实现 OLE/COM 自动化: http: //sourceforge.net/projects/jacob-project/崩溃很可能是由 c 代码中的某些无效状态引起的,因此不同的库可能会有所帮助。

于 2013-11-12T15:17:58.617 回答