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?
3 Réponses :
Le Javadoc pour l'insert avant dit: P>
https://www.javassist.org /html/javassist/ctBehavior.html#insertBore(java.lang.string) P>
Paramètres: SRC - Le code source représentant le bytecode inséré. Ce doit être une seule déclaration ou un bloc. P> blockQuote>
Ainsi, enveloppez le code dans des accolades bouclées, il s'agit d'un bloc unique. P>
Après avoir enveloppé votre code dans des accolades bouclées, il affiche toujours la même erreur ..... [Erreur source]; est manquant
En plus d'envelopper votre code dans des accolades bouclées comme @kutschem em> dit, j'ai également une idée pour vous comment concaténer votre chaîne plus facilement, sans utiliser de pour moi, votre code a l'air bien syntaxiquement, en particulier le stringbuilder code> . Effet secondaire positif, vous obtenez également des pauses de ligne:
string.join code> est disponible depuis Java 8. La sortie de la console serait la suivante: p> < Pré> xxx pré>
remplafirst code> destiné à remplacer
? code> par une valeur fixe. P> < / p>
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. p>
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 a>
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
(\ "\\\\\? \", Code> - ces choses sont faciles à vous tromper.