gpt4 book ai didi

java - 未找到声明式服务绑定(bind)方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:04 24 4
gpt4 key购买 nike

我想使用声明式服务,但抛出错误,指出绑定(bind)方法不可访问或未找到:

!MESSAGE [SCR] ComponentReference.bind(): 绑定(bind)方法“setAreaManagment”未找到或无法访问!

我找不到我的错误。这是我的服务界面:

I管理服务

public interface IAreaManagmentService {
SurfacePolygon getAreaByDatabaseID(int id);

void setAreaVisibility(int databaseId, boolean visible);

public void addArea(Integer objectId, Integer databaseId, double biggestLat, double biggestLon, double smallestLat,
double smallestLon, String name, Date date);

void removeAllAreas();

public LinkedList<DisplayedArea> getAreas();
}

一个名为 GlobeView 的类(扩展了 ViewPart)实现了这个接口(interface)。

这是“发布”服务的 XML 文件

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="visualization-servcieprovider">
<implementation class="GlobeView"/>
<service>
<provide interface="IAreaManagmentService"/>
</service>
</scr:component>

这是应该绑定(bind)服务的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" enabled="true" name="visualization-detailsview">
<implementation class="DetailsView"/>
<reference bind="setAreaManagment" cardinality="1..1" interface="IAreaManagmentService" name="IAreaManagmentService" policy="dynamic" unbind="unsetAreaManagment"/>
</scr:component>

这两个方法在DetailsView.java中

  public void setAreaManagment(IAreaManagmentService areaManagment) {
System.out.println("AreaManagmentSet");

this.areaManagment = areaManagment;

System.out.println("WAS SET " + this.areaManagment);
}

public void unsetAreaManagment(IAreaManagmentService areaManagmentIn) {
System.out.println("AreaManagmentUnSet");
this.areaManagment = null;
}

(当然还有一个私有(private)的 IAreaManagmentService areaMangment ;-) )

我的错误在哪里?我读了 Lars Vogella 的精彩教程,但我找不到我的错误

编辑:我还将服务组件:OSGI-INF/serviceprovider.xml、OSGI-INF/managmentConsumer.xml 添加到我的 list 中

最佳答案

这已经是几年前的事了;但是我今天收到了同样的错误消息。我有一个不同的问题:

我忘记让服务提供者类实现服务接口(interface)。可能 OSGi 服务器无法将实例转换为接口(interface),因此无法使用我的参数为接口(interface)的方法。要解决此问题,我只需添加一个 implements MyInterface

关于java - 未找到声明式服务绑定(bind)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13452475/

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