Где разместить мои собственные эмулированные классы Google?

Это моя текущая настройка

src/
    com
        acme
            Model.gwt.xml   
            model
                token
                    Token.java
    ...
test/
super
    com
        acme
            jre
                java
                    lang
                        CloneNotSupportedException.java (introducing class since GWT doesnt support it)
        google              
            gwt
                emul
                    java
                        lang
                            Character.java (added a method that GWT doesn't support)

супер исходный путь в Model.gwt.xml

является

super-source path="jre"

когда я компилирую, компилятор жалуется на ошибки в обоих моих эмулируемых классах

Ошибки в.... Token.java

... isWhitespace (char) не определено для типа Character ... Нет исходного кода для типа java.lang.CloneNotSupportedException;

Похоже, это не собирание вещей, которые я подражал.

Следуя документации GWT, я также попытался поместить папку "jre" в src/com/acme/, то есть буквально на том же уровне есть модуль xml. Но не работает.

Я прочитал в посте, что эмулятор Google взят сам по себе, поэтому я поместил jre и google в super, но включил только jre в качестве super source

Я использую gwt-maven-plugin для компиляции и мой выдержка из pom.xml

Что я здесь не так делаю?

2 ответа

Чтобы избавиться от ошибок компиляции из суперисточника в eclipse, просто измените путь сборки Java; в любой исходной папке, где у вас есть эмулированный код, поместите в фильтр исключения, такой как **/jre/**/*.java или же **/emul/**/*.java, Это будет радовать идею, в то время как режим разработчика gwt и компиляции будут иметь эмулированный супер-источник на своем пути к классам.

Ох, и я заметил, что вы используете Maven, а не затмение. Просто исключите ваш эмулированный пакет в maven-source-plugin. Таким образом, компилятор maven никогда не видит эмулируемые файлы, а пакет с исходным кодом все еще готов для gwt: цели.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <configuration>
                <excludes>
                    <value>**/emul/**/*.java</value>
                </excludes>
            </configuration>
        </plugin>
    </plugins>

Совет для пользователей IDE (пробовал в Eclipse)

Чтобы гарантировать, что вышеупомянутые фильтры исключения сохраняются между обновлениями / импортом проекта Maven, добавьте <excludes> к вашей конфигурации плагина компилятора Maven:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <excludes>
                    <value>**/emul/**/*.java</value>
                </excludes>
            </configuration>
        </plugin>

Причина, по которой он не работает, заключается в том, что вы, вероятно, все еще работаете в режиме разработчика. Код, который вы сделали выше, должен работать, когда вы GWT компилируете и разворачиваете свое приложение.

Другие вопросы по тегам