开发Eclipse插件遇到的奇怪问题

liujiboy 2011-06-17 06:16:21
今天编写eclipse插件,想用代码打开eclipse自带的编辑器。于是写了如下的代码:
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Test");
IFile java_file = project.getFile(new Path("/java_file.txt"));
InputStream inputStreamJava = new ByteArrayInputStream("class MyType{}".getBytes());
if (!java_file.exists())
java_file.create(inputStreamJava, false, null);
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
IEditorDescriptor desc = workbench.getEditorRegistry().getDefaultEditor(java_file.getName());
IFileEditorInput fileEditorInput = new FileEditorInput(java_file);
page.openEditor(fileEditorInput, desc.getId());
但是程序运行后报了如下的错误:
java.lang.ClassCastException: org.eclipse.ui.part.FileEditorInput cannot be cast to org.eclipse.ui.IFileEditorInput
at org.eclipse.ui.internal.ide.model.FileInputAdapterFactory.getAdapter(FileInputAdapterFactory.java:36)
at org.eclipse.core.internal.adapter.AdapterFactoryProxy.getAdapter(AdapterFactoryProxy.java:80)
at org.eclipse.core.internal.runtime.AdapterManager.getAdapter(AdapterManager.java:293)
at org.eclipse.core.runtime.PlatformObject.getAdapter(PlatformObject.java:66)
at org.eclipse.ui.part.FileEditorInput.getAdapter(FileEditorInput.java:263)
at org.eclipse.ui.texteditor.DocumentProviderRegistry.getDocumentProvider(DocumentProviderRegistry.java:311)
at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.setDocumentProvider(AbstractDecoratedTextEditor.java:1374)
at org.eclipse.ui.texteditor.AbstractTextEditor.updateDocumentProvider(AbstractTextEditor.java:4071)
at org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput(AbstractTextEditor.java:4126)
at org.eclipse.ui.texteditor.StatusTextEditor.doSetInput(StatusTextEditor.java:203)
at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.doSetInput(AbstractDecoratedTextEditor.java:1413)
at org.eclipse.ui.editors.text.TextEditor.doSetInput(TextEditor.java:166)
这个异常让人很无语,org.eclipse.ui.part.FileEditorInput无法转换为org.eclipse.ui.IFileEditorInput
但org.eclipse.ui.part.FileEditorInput本来就实现了org.eclipse.ui.IFileEditorInput。
如果这个转换不成功,IFileEditorInput fileEditorInput = new FileEditorInput(java_file);就应该报错才对。
大家知道这个问题产生的原因吗?
...全文
248 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2011-06-24
  • 打赏
  • 举报
回复
跟踪学习,希望能更快更好的把问题解决了 ;
salever 2011-06-23
  • 打赏
  • 举报
回复
我运行了下你的代码,没有出现ClassCast错误。你可以在

org.eclipse.ui.internal.ide.model.FileInputAdapterFactory.getAdapter(FileInputAdapterFactory.java:36)

地方设置断点,跟进去看看为什么getAdapter出错,我觉得可能跟插件环境有关。。。



tyj1982 2011-06-22
  • 打赏
  • 举报
回复
错在这一行
page.openEditor(fileEditorInput, desc.getId());
看看 IWorkbenchPage.openEditor API文档吧,第一个参数类型传错了

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧