java - org.openide.util.Lookup Cannot Find Any Classes Implementing -
sqlutils.java:
import org.openide.util.lookup; import java.util.serviceloader; // doesn't work either public class sqlutils { public static dbdriver getdriver(string prefix) { for(dbdriver e : lookup.getdefault().lookupall(dbdriver.class)) { system.out.println(e.getprefix()); if(e.getprefix().equalsignorecase(prefix)) { return e; } } return null; } }
mysqldriver.java:
public class mysqldriver implements dbdriver { @override public string getprefix() { return "mysql"; } }
dbdriver.java:
import java.io.serializable; public interface dbdriver extends serializable { public string getprefix(); }
main.java:
public class main { public static void main(string[] args) { dbdriver d = sqlutils.getdriver("mysql"); } }
this nothing when running it, cannot find classes implementing. program trying driver entered parameter sqlutils.getdriver(string prefix) (in main.java). reason cannot work.
i'm not familiar openide lookup
mechanism, familiar java serviceloader
mechanism.
you need provide file in meta-inf/services/
folder describing classes implement specific interfaces. java docs describing serviceloader
class example:
if
com.example.impl.standardcodecs
implementation ofcom.example.codecset
service jar file contains file namedmeta-inf/services/com.example.codecset
this file contains single line:
com.example.impl.standardcodecs # standard codecs implementing
com.example.codecset
what missing similar file needs included on classpath or within jar file.
you don't include package names cannot provide more direct example solve problem.
Comments
Post a Comment