SQLUtils.java類:org.openide.util.Lookup找不到任何實施
import org.openide.util.Lookup;
import java.util.ServiceLoader; // This 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();
}
主。 java:
運行它時什麼都不做,它找不到任何實現的類。 程序試圖做的是獲取作爲SQLUtils.getDriver(字符串前綴)(在Main.java中)的參數輸入的驅動程序。 出於某種原因,我無法得到這個工作。
所有這些都在src文件夾下。所以在根目錄下,我添加了一個META-INF/services /文件夾? – 3legit4quit
正確。 'ServiceLoader'正在這個文件夾('META-INF/services /')中尋找它們,從你的源文件夾開始,例如srcFolder/META-INF /服務/ xxx.yyy.zzz.DBDriver。它不會再猜你。 –