Я обнаружил необходимость использовать String.format в моем проекте. Тем не менее, это не работает в GWT, и у меня есть замена, которая использует GWT RegExp. Однако я хотел бы, чтобы мой проект работал без ошибок при использовании обычного интерфейса Swing, который не зависит от GWT. Общий код зависит от String.format, хотя. Проблема в том, что я не знаю, как заставить компилятор GWT использовать другой класс, чем другой код. Я уже пытался сделать все это в одном файле, но он не работает, так как GWT не может обработать исключение NoClassDefFoundError, которое я использую, чтобы определить, когда GWT отсутствует в classpath.
Вот мой текущий код:
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);
}
}
}
Как мне сделать этот компилятор и запустить на GWT и JRE без GWT в classpath? Действительно ли нужно, чтобы скрипт сборки Ant заменял весь файл другим файлом при сборке для GWT по сравнению с Swing / Sun JRE?