Problème de chargement dynamique lorsque le programme est exécuté à partir d'un fichier jar
-
05-07-2019 - |
Question
J'ai une application qui peut être étendue via des classes java conformes à une interface donnée. Si j'exécute le programme à partir des classes de ligne de commande, je peux instancier les classes complémentaires à l'aide de:
Class.forName("myAddon").newInstance();
Cependant, si je lance l'application (en configurant correctement la classe principale), j'obtiens une exception classe non trouvée. Quelqu'un peut-il nous éclairer sur ce qui se passe ici?
TIA, Adam
La solution
J'ai réussi à le faire fonctionner à l'aide d'un URLClassLoader, en spécifiant le chemin de recherche comme étant le répertoire actuel, comme suit:
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
Merci pour votre aide,
Adam
Autres conseils
La classe que vous recherchez ne figure pas dans le chemin de classe. Si c'est dans un répertoire
i.e. MyClass.class MonJar.jar
Vous devez faire:
java -classpath . -jar MyJar.jar
Mais en réalité, nous avons besoin de plus d’informations pour répondre à la question. Quelle est la classe principale définie dans le manifeste de jar? Quel est ton parcours? Comment spécifiez-vous la classe à charger?