Où placer un jar pour qu'un ServiceLoader.load le trouve
Bonjour,
Je veux créer un "plugin" pour application java et pouvoir le déployer/distribuer séparément de l'application-mère.
Quand j'incorpore sa source dans la source de l'application-mère, ça fonctionne. Que je les sépare et mets les 2 jar l'un à côté de l'autre. Cela ne fonctionne pas.
Voici le code de l'application-mère:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| private static void init() {
extensions = new LinkedHashMap<String, itFileAnalyser>();
analysers = new ArrayList<itFileAnalyser>();
// Load les analyseurs connus
ServiceLoader<itFileAnalyser> loader = ServiceLoader.load(itFileAnalyser.class);
logger.debug("Looking for file analysers.");
for (Iterator<itFileAnalyser> it = loader.iterator(); it.hasNext();) {
itFileAnalyser analyser;
try {
analyser = it.next();
} catch (Exception e) {
logger.error("while retrieving an analyser",e);
continue;
}
logger.debug("\tFound " + analyser.getClass().getName());
areSupportedFilesPlayable = areSupportedFilesPlayable | analyser.areFilesPlayable();
analysers.add(analyser);
retrieveExtensions(analyser);
}
logger.debug("Got analyser for:");
if (extensions.isEmpty()) {
logger.debug("\tnone");
} else {
for (String extension : extensions.keySet()) {
logger.debug("\t" + extension + " -> " + extensions.get(extension).getClass().getName());
}
}
} |
Le jar du plugin est structuré comme ceci
Code:
1 2 3 4 5 6 7 8 9
| com
...
mesclasses.class
META-INF
maven
...
pom.properties, pom.xml
services
com.zparkingb.zploger.Compute.analyzers.itFileAnalyser |
Avez-vous une idée de ce qu'il faut changer ?