Je reçois une erreur étrange sur la boîte d'un collègue. CGLib utilise une classe de service pour la journalisation AOP de printemps, et lors de l'exécution, il indique «erreur de compilation non résolue: doit remplacer une méthode de superclasse» sur la classe fastclass par classe proxy cglibcglib compilateur jdk compliance
Dans la classe incriminée, j'utilise Les annotations @override lorsque j'implémente une interface, et je sais qu'elle est supportée dans jdk 1.6 mais pas 1.5 CGLib est auto-proxying cette classe d'implémentation
Cependant, ça marche bien sur ma boîte avec jdk_1.6_17, mais pas sur son avec jdk_1.6_10
Cependant cependant, il peut compiler correctement le projet en utilisant maven, qui utilise le même jdk Suppression de l'annotation @Override erreur unglig cglib, mais c'est bizarre non?
Quel compilateur cglib utilise-t-il pour son auto-proxying, et cela pourrait-il être un bug dans jdk_1.6_10 ou y a-t-il autre chose qui me manque?
utilisant un ressort 3.0.4, jboss 5,10, la sécurité ressort 3.0.3
essentiellement, la classe implémente AuthenticationUserDetailsService au printemps-sécurité.
La signature de la méthode fautive:
@Override
public UserDetails loadUserDetails(Authentication auth) throws UsernameNotFoundException;
UserDetails est une interface de sécurité à ressort, et est ainsi une authentification.
Pouvez-vous afficher le code source de la méthode à l'origine du problème? Cette méthode utilise-t-elle des génériques ou est-elle déclarée comme renvoyant un sous-type du type de retour des méthodes substituées (covariance)? –
ajouté, rien de tel, il retourne effectivement une implémentation personnalisée de UserDetails, mais il est déclaré à retourner UserDetails. – gtrak