2009-11-14 12 views
1

J'ai une exigence que j'ai besoin de charger deux versions d'un pot à la fois. Pour éviter les collisions de chemin de classes, j'aimerais renommer les paquets de l'un des pots. Ensuite, dans la source, vous pouvez toujours facilement déterminer la version par le nom du paquet.Refactor packages dans un Jar

J'ai joué avec javap mais je n'ai pas trouvé d'assembleur pour Java 1.6. J'ai également essayé de décompiler le code avec JD mais il n'a jamais tout à fait raison et il ne compilerait pas.

+0

Vous cherchez un décompilateur ou une approche différente à une solution? –

+0

JD était le seul compilateur qui semblait être maintenu, tous les autres étaient des années 90 et je ne m'attendais pas à ce qu'ils travaillent avec 1.6. Mais je ne vais pas choisir, je suis vraiment à la recherche d'une solution. –

+0

Mec ... OSGI homme !! –

Répondre

1

Une autre chose à considérer au lieu de modifier manuellement les classes est d'utiliser un peu de magie de chargeur de classe. Je n'ai jamais fait cela moi-même, mais j'ai lu un peu à ce sujet. Il y a un article sur devx qui explique comment load multiple versions of classes.

+0

Cela a été pris en compte, mais nous avons décidé si nous voulions commencer à utiliser les classloaders, nous devrions juste le faire correctement et utiliser OSGI. Malheureusement, il n'y a pas de temps pour l'appliquer. –

1

Vous pouvez utiliser le package opensource: JclLoader qui permet de charger différentes versions du même fichier. C'était également un besoin dans l'un de nos systèmes de faire des tests.

Lien: http://sourceforge.net/projects/jcloader/