我正在尝试将 E3.X 应用程序移植到 E4 并遵循 Lars Vogel 的教程。我创建了一个视图包装器,它扩展了 DIViewPart 类,视图本身在构造函数上使用依赖注入,并在我的 plugin.xml 中引用了视图包装器。
但是,在启动应用程序时会引发异常:
org.eclipse.e4.core.di.InjectionException:在 my.application.views.MyView 中找不到可满足的构造函数
即使经过几个小时的谷歌搜索,我也不知道出了什么问题。也许我只是在寻找错误的东西,但我现在一无所知。如果有人能指出我缺少的东西,我会很高兴。
只是为了确保我在下面附加了受影响的视图源代码:
公共类 MyViewWrapper 扩展 DIViewPart { 公共 MyViewWrapper() { 超级(MyView.class); } }
公共类 MyView { 公共静态最终字符串 ID = MyView.class.getCanonicalName(); 自有品牌标签; @注入 公共MyView(复合父){ this.label = new Label(parent, SWT.NONE); this.label.setText("我的观点"); } }
任何帮助表示赞赏并提前感谢。
编辑: Stefan 指出,这个问题可能与 e4 在构造函数调用期间不知道正确的组合这一事实有关,并且以下代码应该可以解决问题:
公共类 MyView { 公共静态最终字符串 ID = MyView.class.getCanonicalName(); 自有品牌标签; 公共 MyView() { } @PostConstruct 公共无效createPartControl(复合父){ this.label = new Label(parent, SWT.NONE); this.label.setText("传感器视图"); } }
可悲的是,情况并非如此。异常发生了变化,但原因可能仍然相同:
org.eclipse.e4.core.di.InjectionException:找不到匹配的方法来调用
我的假设是依赖注入作为一个整体不能正常工作,但我不知道为什么,因为我所做的一切都与我找到的教程中的完全一样。我需要添加 .e4xmi 吗?