我需要通过外部jar提供最简单的方法来提供接口的实现。我想避免使用text / xml文件,因为它可能会在重构类或接口名称时导致错误。
我尝试过Netbeans Lookup,因为它有一个@ServiceProvider annotation应该以声明的方式注册实现。
所以我编写了一个简单的试用代码,它甚至不会在不同的jar中拆分接口和提供程序,但它仍然无法查找组件:
import org.openide.util.Lookup;
import org.openide.util.lookup.ServiceProvider;
public class LookupTrial {
public static void main(String[] args) {
IService s = Lookup.getDefault().lookup(IService.class);
if(s==null)
throw new RuntimeException("lookup failed");
else
s.hello();
}
public interface IService{
public void hello();
}
@ServiceProvider(service=IService.class)
public class MyImplementation implements IService{
public MyImplementation(){}
@Override
public void hello() {
System.out.println("hello lookup");
}
}
}
我错误地使用Lookup吗?我应该搜索另一个Lookup库来做我想做的事吗?