Java GWT-приложение - компиляция работает иногда, а иногда нет - PullRequest
1 голос
/ 14 февраля 2020

Надеюсь, я предоставлю все необходимое для этого:

Java 8 GWT 2.5.1 Eclipse 2018-09 (4.9.0) Git

У меня есть проект, который я не могу получить последовательно компилировать. В Eclipse я компилирую, используя опцию GWT -> Compile, в то время как на наших веб-серверах мы используем Ant.

Я могу получать успешные компиляции на одной или нескольких из этих машин (у нас есть Dev и сервер QA) , Я могу заставить их скомпилировать один, два, может три раза. Затем на любом компьютере произойдет сбой, произойдет сбой и произойдет сбой.

Ошибка заключается в следующем:

[ОШИБКА] Ошибки в 'jar: file: / C: / Users / htaylor /git/codemanagerclient/CodeManagerClient/war/WEB-INF/lib/guava-gwt-12.0.jar!/com/google/common/base/Strings.java '[ОШИБКА] Строка 1: тип java. util.regex.Pattern не может быть решен. На него косвенно ссылаются необходимые файлы .class

Я только кодирую с Java чуть больше года, и я просто откровенно озадачен. Я не понимаю, почему он будет компилироваться один раз, а потом не следующий, даже если это будет сделано сразу после успешного. Для меня это говорит о том, что что-то происходит не в том же порядке, каждый раз.

Мне просто интересно, может ли кто-нибудь помочь пролить свет на это.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Вам необходимо использовать regex из библиотек GWT:

import com.google.gwt.regexp.shared.MatchResult;
import com.google.gwt.regexp.shared.RegExp;

Вот полная рабочая утилита Regex с GWT:

public class RegexHelper {

    public static ArrayList<String> getMatches(String input, String pattern) {
        ArrayList<String> matches = new ArrayList<String>();
        RegExp regExp = RegExp.compile(pattern, "g");
        for (MatchResult matcher = regExp.exec(input); matcher != null; matcher = regExp.exec(input)) {
            for(int i=0;i<matcher.getGroupCount();i++) {
                if(i != 0) {
                    matches.add(matcher.getGroup(i));
                }
            }
        }
        return matches;
    }
}

Вы можете использовать ее следующим образом:

RegexHelper.getMatches(INPUT_STRING, REGEX_PATTERN);

Надеюсь, это поможет.

0 голосов
/ 19 февраля 2020

Я ценю ваши комментарии. Я не согласен с теми, кто говорит, что наши вещи слишком стары. Это определенно так. Причины этого сложны. Все, что я могу сказать, мы работаем над этим.

Я также ценю предложение об использовании регулярных выражений из библиотек GWT. Я могу это проверить.

Я решил свою проблему, не столько путем ее решения, сколько путем ее обхода. Мне удалось определить, что мы использовали только один метод из класса Strings. java, и это был isNullOrEmpty (). И мы использовали его только несколько раз в двух классах. Я просто написал локальную версию этого метода в этих классах, что означало, что компилятор больше не искал класс. Это глупо и, по сути, является уловкой, но в этом случае это сработало.

...