10
votes

SCALA 2.8: Utilisez Java Annotation avec un paramètre Array

J'essaie de mettre en œuvre un haricot de session Javae avec Scala 2.8.
Parce que c'est un haricot de session à distance, je dois l'annoter avec l'annotation Java suivante: xxx

je n'ai trouvé que Cet exemple pour SCALA 2.7. Dans Scala 2.7, il est possible de définir le haricot de session comme celui-ci: xxx

Comment puis-je utiliser cette annotation de la même manière avec SCALA 2.8? J'ai déjà essayé de nombreuses versions différentes, tous résultant "L'argument d'annotation doit être une constante", "Début illégal d'une expression simple". Toutes ces définitions ne fonctionnent pas: xxx


0 commentaires

3 Réponses :


1
votes

D'accord, j'ai découvert que vous pouvez utiliser un tableau comme paramètre d'annotation, comme on l'a vu ici . Donc en principe, ce devrait travailler: xxx

voici mon myejbremote: xxx

donc le tableau est donc le tableau D'accord, mais mon prochain problème est une inadéquation de type provenant de classe de [myejbremote] . Comme il semble qu'il ne soit pas possible d'avoir un .class comme paramètre d'annotation. Cela a également été discuté ici , sans solution à cela. Fera une enquête plus approfondie sur cette ...


0 commentaires

6
votes

Vous avez la syntaxe juste dans votre réponse. Le problème est que l'annotation @Remote utilise la classe Classe plutôt que Classe . Les types RAW Java sont une conséquence malheureuse des contraintes de compatibilité à l'envers de Java 1.4 à Java 1.5 et source courante de bogues dans le compilateur Scala.

J'ai trouvé bug # 3429 décrivant fondamentalement le même problème, et ajouté votre problème particulier comme un autre cas de test.

La seule solution de contournement serait de prendre le code source de l'annotation problématique, remplacer class avec la classe <> , les recompilez et mettez ce pot devant la classe de classe à Scalac. Outre cela, vous devez voter pour le bogue en ajoutant votre courrier électronique à la liste CC.


0 commentaires

1
votes

Comme toujours une réponse compétente ... merci! Ceci est un véritable show-bouchon pour utiliser Scala dans une application Javaee. Changer l'annotation n'est pas une option pour moi. Je me demande pourquoi cela a fonctionné avec Scala 2.7x. Sur Cette page L'auteur implémente l'annotation comme celle-ci: < Pré> xxx

qui semble fonctionner. Malheureusement, SCALA 2.7X n'est pas une option pour moi ...


0 commentaires