在Java中使用Eclipse SWT-OleClientSite打开扩展名为.doc的Word文档
我正在开发一个程序,它使用EclipseSWT客户端站点(在Windows7中)在RCP应用程序中打开Word文档。在过去两年中,该计划调用了以下构造函数:在Java中使用Eclipse SWT-OleClientSite打开扩展名为.doc的Word文档,java,swt,ole,Java,Swt,Ole,我正在开发一个程序,它使用EclipseSWT客户端站点(在Windows7中)在RCP应用程序中打开Word文档。在过去两年中,该计划调用了以下构造函数: OleClientSite clientSite = new OleClientSite(oleFrame, SWT.NULL, new File(documentFileName)); 自从SWT的最新更新以来,该构造函数现在在尝试打开扩展名为“.doc”的Word文档时引发异常。扩展名为“.docx”的Word文档仍能正常运行。问题似
OleClientSite clientSite = new OleClientSite(oleFrame, SWT.NULL, new File(documentFileName));
自从SWT的最新更新以来,该构造函数现在在尝试打开扩展名为“.doc”的Word文档时引发异常。扩展名为“.docx”的Word文档仍能正常运行。问题似乎是OleClientSite没有正确地将“.doc”识别为单词扩展名,因为使用以下构造函数显式输入此信息是有效的:
OleClientSite clientSite = new OleClientSite(oleFrame, SWT.NULL, "Word.Document", new File(documentFileName));
但是,此构造函数附带一个警告,说明永远不能使用它:
重要提示:此方法不是公开的
OleClientSite的API。它被标记为公共,以便
可以在SWT提供的包中共享。事实并非如此
可在所有平台上使用,且不应从
应用程序代码
奇怪的是,尽管这个构造函数明确表示永远不应该使用它,但它是
如果有人有什么建议,我将不胜感激。到目前为止,我的选项似乎是禁止我的用户使用“.doc”文件或回滚到SWT的旧版本。当前的Eclipse版本支持从navigator视图打开Word文档(*.doc)。它使用类
org.eclipse.ui.internal.editorsupport.win32.OleEditor
在编辑器部件中打开文档。我建议您看看[1]中的代码,并根据您的场景调整所需的部分
[1] 与相关,但这个问题没有解决方案。我只是尝试了一下,不幸的是,Eclipse发送给我的错误与我在旧客户端代码中得到的错误相同。未能创建Ole客户端。结果=-2147221164。Eclipse自身的异常处理也给出了一个原因:“无法创建就地编辑器。这可能是因为没有针对您试图打开的文件类型注册的Ole编辑器。”