Je dois une situation où je dois charger une classe nommée. S'il y a plusieurs classes avec le même nom (par exemple, com.example.myclass
) dans mon chemin de classe, je dois charger les deux. J'utilise la méthode 'loadClass()' de ma classe CustomLoader qui dérive de java.lang.ClassLoader
. Je n'ai pas changé le comportement de la classe parente mais j'appelle simplement les méthodes du parent. Mon problème est que s'il y a deux classes avec le même nom, je ne peux en charger qu'une seule. J'ai scanné le web pour trouver une solution mais je n'en ai trouvé aucun. J'ai trouvé de nombreuses solutions sur les classes de rechargement en créant une nouvelle instance de chargeur de classe mais dans mon cas, la nouvelle instance finira probablement par recharger la première classe. Ce problème peut-il être résolu?résoudre les conflits de nom de classe dans Java
EDIT: J'ai oublié de mentionner que les deux classes avec le même nom sont dans différents fichiers jar.
EDIT: Jon et Stephen ont tous deux donné la même solution mais je ne peux en marquer qu'un comme réponse. Désolé :(J'ai voté les deux réponses cependant
Je suis nouveau à Java. Pouvez-vous expliquer ce que vous voulez dire par un chargeur de classe pour chaque pot? Comment puis-je spécifier un chargeur de classe différent pour chaque pot? – 341008
@Rajorshi: Vous devrez créer une nouvelle instance de (par exemple) URLClassLoader en vous référant à chaque fichier jar, et demander à chaque instance de charger la classe. Mais pour être honnête, si vous êtes nouveau sur Java, je commencerais à essayer ce genre de chose pendant un moment. Je suggère même qu'un développeur Java expérimenté devrait essayer d'éviter de se retrouver dans cette situation si possible. –
Merci pour le conseil. Je ne peux pas vraiment refuser d'implémenter ce module, mais les développeurs Java supérieurs vont revoir le code. Si quelque chose me manque, ils devraient pouvoir le détecter. – 341008