javax.imageio.spi.ServiceRegistry
の要求プロセッサを動的に登録するために使用しようとしていますHttpServlet
:
private static final Class PROVIDER_CLASS = IRequestProcessor.class;
private void loadProviders() throws ClassNotFoundException {
_serviceRegistry = new ServiceRegistry(ServiceRegistry.lookupProviders(PROVIDER_CLASS));
}
私が得るエラーは次のとおりです。
java.lang.ClassCastException: org.confused.servlet.GetStandardCodesProcessor
javax.imageio.spi.ServiceRegistry.<init>(ServiceRegistry.java:103
org.confused.servlet.MyServlet.loadProviders(.java:100)
org.confused.servlet.MyServlet.checkProviders(.java:106)
org.confused.servlet.MyServlet.service(.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
クラスGetStandardCodesProcessor
は を実装しIRequestProcessor
ます。この呼び出しServiceRegistry.lookupProviders()
は、ファイルからクラスのリストを取得していますMETA-INF/services/org.confused.servlet.IRequestProcessor
。からイテレータを渡す方法についてのニュアンスが欠けているようですServiceRegistry.lookupProviders()
。
このページは、lookupProviders() からの戻り値を型指定されていない Iterator に代入し、それがServiceRegistry
コンストラクターに渡されるにもかかわらず、私が行っていることのほとんどを示しています。そのテクニックは私に同じエラーを与えます。
最後に、問題があれば、これを Eclipse Gallileo (ビルド 20100218-1602) で実行しています。
よろしく、 ドリュー