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 of com.example.codecset service jar file contains file named

meta-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

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -