J'ai trouvé le besoin d'utiliser String.format dans mon projet. Cependant, cela ne fonctionne pas dans GWT, et j'ai un remplacement qui utilise GWT RegExp. Cependant, je voudrais que mon projet s'exécute sans erreurs en utilisant l'interface normale de Swing qui ne dépend pas de GWT. Le code partagé dépend cependant de String.format. Le problème est que je ne sais pas comment faire que le compilateur GWT utilise une classe différente de l'autre code. J'ai déjà essayé de tout faire dans un fichier, mais cela ne fonctionne pas, car GWT ne peut pas gérer l'exception NoClassDefFoundError que j'utilise pour détecter quand GWT est absent de classpath.Substitution de classe lors de la compilation avec GWT
Voici mon code actuel:
package testpackage.shared;
import com.google.gwt.regexp.shared.RegExp;
import com.google.gwt.regexp.shared.SplitResult;
public class Util {
public static String format(final String format, final Object... args) {
try {
final RegExp regex = RegExp.compile("%[a-z]");
final SplitResult split = regex.split(format);
final StringBuffer msg = new StringBuffer();
for (int pos = 0; pos < split.length() - 1; pos += 1) {
msg.append(split.get(pos));
msg.append(args[pos].toString());
}
msg.append(split.get(split.length() - 1));
return msg.toString();
} catch (NoClassDefFoundError ex) {
return String.format(format, args);
}
}
}
Comment puis-je faire cette compiler et exécuter sur GWT et GWT sans JRE en classpath? Ai-je vraiment besoin de faire en sorte que le script de construction Ant remplace le fichier entier par un script différent lors de la construction de GWT par rapport à Swing/Sun JRE?
Vous dites que String.format "ne fonctionne pas dans GWT", quel est le problème? –
Je reçois une erreur similaire à celle-ci: http://stackoverflow.com/questions/3126232/string-formatter-in-gwt –