outils java8.traitement des annotations jar avec apt


En tant que programmeurs java, nous avons hérité d'une application héritée qui est maintenant mise à niveau vers java8. L'application fonctionne sur un jre intégré qui est livré avec notre application.

Nous expédions également des outils.pot avec de l'Application, qui est utilisé pour: 1) Compiler .fichiers java au moment de l'exécution; par exemple, com.soleil.outils.javac.Principal.compiler ("SomeCustomClass.Java"...). 2) Traiter les annotations à l'aide de l'outil apt (package com.soleil.miroir.apt); par exemple 'int aptReturnCode = COM.soleil.outils.apt.Principal.processus (myAnnotationProcessorFactory...);

Le problème est que l'outil apt a été supprimé des outils.pot en java8 - > http://docs.oracle.com/javase/7/docs/technotes/guides/apt/GettingStarted.html#deprecated

Et nous ne pouvons pas utiliser quelque chose comme 'JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool () ' parce que nous n'avons accès qu'à notre jre intégré et pas de jdk sur les systèmes clients.

Comme solution de contournement, nous compilons le SomeCustomClass.java dans un fichier jar en externe, puis en l'ajoutant au chemin de classe de notre application, mais ce n'est pas viable à long terme car ces classes proviennent du client et peuvent changer tout le temps.

Je peux penser aux façons suivantes de contourner ce problème: 1) Expédier 2 outils.jar un ancien pour le traitement des annotations et un java8 pour compiler du code au moment de l'exécution, mais aucune idée de comment éviter les conflits de nommage, etc. 2) Retravailler le code myAnnotationProcessorFactory qui utilise le traitement des annotations pour utiliser javax.annotation.* au lieu de com.soleil.outils.apt.* . Comme il s'agit d'un code hérité, il sera assez sujet aux erreurs.

Pouvez-vous penser à d'autres moyens de le contourner ?

Merci beaucoup

Author: Ortomala Lokni, 2015-02-04