0
votes

Javassist; est manquant

Quelqu'un pourrait-il dire ce qui ne va pas avec mon code? Lorsque vous utilisez Javassist pour insérer un code, il affiche une erreur "causée par: Compiler erreur:; est manquant"; Mais je double vérification, il n'y a pas; manquant du tout. Y a-t-il une limitation de Javassist ici? XXX


2 commentaires

Il est difficile d'analyser visuellement ces lignes d'append, donc si vous commencez vos lignes d'appends, avez-vous toujours un; Erreur? Si tel est le cas, vous devez probablement nous montrer une autre partie de votre code. Votre message d'erreur n'est-il pas indiqué sur une ligne spécifique?


Je vérifierais les séquences d'échappement (\ "\\\\\? \", - ces choses sont faciles à vous tromper.


3 Réponses :


6
votes

Le Javadoc pour l'insert avant dit:

https://www.javassist.org /html/javassist/ctBehavior.html#insertBore(java.lang.string)

Paramètres: SRC - Le code source représentant le bytecode inséré. Ce doit être une seule déclaration ou un bloc.

Ainsi, enveloppez le code dans des accolades bouclées, il s'agit d'un bloc unique.


1 commentaires

Après avoir enveloppé votre code dans des accolades bouclées, il affiche toujours la même erreur ..... [Erreur source]; est manquant



0
votes

En plus d'envelopper votre code dans des accolades bouclées comme @kutschem dit, j'ai également une idée pour vous comment concaténer votre chaîne plus facilement, sans utiliser de stringbuilder . Effet secondaire positif, vous obtenez également des pauses de ligne: xxx

string.join est disponible depuis Java 8. La sortie de la console serait la suivante: < Pré> xxx

pour moi, votre code a l'air bien syntaxiquement, en particulier le remplafirst destiné à remplacer ? par une valeur fixe. < / p>


0 commentaires

1
votes

J'ai résolu mon bug en remplaçant la boucle pour la boucle.

Il semble que Javaassit ne supporte pas la boucle de la boucle, il doit le changer pour (int i = 0; i

et merci à @kutschem, le code doit également être enveloppé par des accolades bouclées. xxx


1 commentaires

Le compilateur au sein de Javassist est très simple et avec beaucoup de limitation. par exemple. Generics, Vargs, (ONU /) Boxe. Voir GITUB.COM/JBOSS-JAVASSIST/JAVASIST/WIKI/TUCTORIAL-3