2013-08-06 40 views
0

我一直在開發OpenOffice Writer擴展。目前,我需要檢索當前的文檔對象。以下應該將當前組件作爲Writer文檔返回。嘗試使用OpenOffice API獲取XDesktop實例時發生ClassCastException

XMultiComponentFactory factory = context.getServiceManager(); 
XDesktop desktop = (XDesktop) factory.createInstanceWithContext("com.sun.star.frame.Desktop", context); 
XTextDocument document = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, desktop.getCurrentComponent()); 

return document; 

我的問題在第二行運行時發生。以下異常被拋出:

java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to com.sun.star.frame.XDesktop 

爲什麼createInstanceWithContext返回一些東西,不符合要求的接口?有沒有辦法解決它?

回答

1

望着文檔here,有兩個步驟來獲取接口:

  Object desktop = xRemoteServiceManager.createInstanceWithContext (
       "com.sun.star.frame.Desktop", xRemoteContext); 
      XDesktop xDesktop = (XDesktop)UnoRuntime.queryInterface(XDesktop.class, desktop); 
+0

事實上,這就是我失蹤了。謝謝! –

相關問題