gpt4 book ai didi

java - org.eclipse.e4.core.di.InjectionException : Could not find satisfiable constructor 问题

转载 作者:行者123 更新时间:2023-11-29 09:00:14 25 4
gpt4 key购买 nike

我正在尝试将 E3.X 应用程序移植到 E4 并遵循 tutorial拉斯沃格尔。我创建了一个扩展 DIViewPart 类的 View 包装器, View 本身在构造函数上使用依赖注入(inject)并在我的 plugin.xml 中引用了 View 包装器。

但是,在启动应用程序时会抛出异常:

org.eclipse.e4.core.di.InjectionException: Could not find satisfiable constructor in my.application.views.MyView

即使经过几个小时的谷歌搜索,我也不知道出了什么问题。也许我只是在寻找错误的东西,但我现在一无所知。如果有人能指出我所缺少的东西,我会很高兴。

为了确保我在下面附加了受影响的 View 源代码:

public class MyViewWrapper extends DIViewPart {    public MyViewWrapper() {        super(MyView.class);    }}
public class MyView {    public static final String ID = MyView.class.getCanonicalName();    private Label label;    @Inject    public MyView(Composite parent) {        this.label = new Label(parent, SWT.NONE);        this.label.setText("My view");          }}

感谢任何帮助,并提前致谢。

编辑:Stefan 指出,这个问题可能与 e4 在构造函数调用期间不知道正确的组合这一事实有关,下面的代码应该可以解决这个问题:

public class MyView {    public static final String ID = MyView.class.getCanonicalName();    private Label label;    public MyView() { }    @PostConstruct    public void createPartControl(Composite parent) {        this.label = new Label(parent, SWT.NONE);        this.label.setText("Sensor view");                  }}

遗憾的是,事实并非如此。异常已更改,但原因可能仍然相同:

org.eclipse.e4.core.di.InjectionException: Unable to find matching method to invoke

我的假设是依赖注入(inject)作为一个整体没有正常工作,但我不知道为什么,因为我已经完全按照我找到的教程完成了所有操作。我需要添加 .e4xmi 还是什么?

最佳答案

我遇到了和你一样的情况,通过调试代码找到了解决办法。

查看堆栈跟踪,更具体地说是 org.eclipse.e4.core.internal.di.InjectorImpl类,大约在第 213 行。 invoke方法接收一个限定符参数,该参数是错误消息中提到的匹配方法的目标。这个量词是依赖注入(inject)正在寻找的。

例如,在我的例子中,量词 参数是一个 @Focus注解。所以通过添加 @FocusMyView 类中的适当方法上注释,我能够摆脱你描述的第二个问题,因为 DI 找到了正确的匹配方法来调用。

我知道这是对几个月前提出的问题的较晚回答,但我认为这可以帮助其他人在不花费太多时间的情况下进行调试。

关于java - org.eclipse.e4.core.di.InjectionException : Could not find satisfiable constructor 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17897398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com