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.standardcodecsimplementation ofcom.example.codecsetservice 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