Ссылка на bean-компонент компиляции GWT (для типа нет доступного исходного кода) - PullRequest
2 голосов
/ 29 июня 2011

Я использую версию gwt2.0.3 в своем приложении. В этом приложении есть два проекта. Один для клиентской стороны, а другой для серверной. В клиентском проекте я дал ссылку на серверный проект. Так что я возможность получить все методы и свойства серверной части на стороне клиента.

Мои все bean-компоненты расположены на стороне сервера. Так что, пока я импортирую bean-компоненты на стороне клиента, это не создает никаких проблем.

Но во время компиляции он дает проблемы со ссылками. И он дает проблемы, подобные приведенным ниже:

[ERROR] Ошибки в 'файле: / E: /NTWrokSpace1June2011/AdminClient/src/com/nextenders/client/util/factory/DocumentMetadataFactory.java'

[ОШИБКА] Строка 26: исходный код недоступен для типа com.nextenders.facadeimplementation.beans.metadata.Table; Вы забыли унаследовать необходимый модуль?

Привет всем Я использую версию gwt2.0.3 в своем приложении. В этом приложении есть два проекта. Один для клиентской стороны, а другой для серверной. В клиентском проекте я дал ссылку на серверный проект. Так что я могу получить все методы и свойства серверной части на стороне клиента.

Мои все bean-компоненты расположены на стороне сервера. Так что, пока я импортирую bean-компоненты на стороне клиента, это не создает проблем.

Но во время компиляции он дает проблемы со ссылками. И он дает проблемы, подобные приведенным ниже:

[ERROR] Ошибки в 'файле: / E: /NTWrokSpace1June2011/AdminClient/src/com/nextenders/client/util/factory/DocumentMetadataFactory.java'

[ОШИБКА] Строка 26: исходный код недоступен для типа com.nextenders.facadeimplementation.beans.metadata.Table; Вы забыли унаследовать необходимый модуль?

Здесь AdminClient - мой клиентский проект.

И пакет com.nextenders.facadeimplementation.beans.metadata на стороне сервера. И при импорте в класс он не создает никаких проблем.

Но время компиляции дает проблемы.

Пожалуйста, помогите мне от этого.

Ответы [ 4 ]

1 голос
/ 29 июня 2011

Обычным способом было бы разделить ваш проект на три пакета: server, client и shared.

В client вы помещаете GWT-код, в server, очевидно, код сервера,В shared вы помещаете код, принадлежащий как клиенту, так и серверу: прежде всего классы, которые передают RPC.

Вы должны сообщить GWT, где находятся ваши источники.Вы должны ссылаться на эти два в вашем .gwt.xml (если ваш файл gwt.xml находится в папке чуть выше клиента и является общим):

<source path='client'/>
<source path='shared'/>
1 голос
/ 29 июня 2011

Я подозреваю, что часть вашей проблемы находится в определении вашего модуля. Компилятор GWT будет искать исходные пути, которые вы определили в файле модуля, чтобы определить, какие классы пытаться скомпилировать в Javascript. Скорее всего, вы ссылаетесь на класс Table из клиентского кода, но этот bean-компонент не существует ни в одном из исходных путей, указанных в файле XML вашего модуля.

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

1 голос
/ 29 июня 2011

Сообщение об ошибке указывает на то, что класс

com.nextenders.facadeimplementation.beans.metadata.Table;

ссылается (импортирует) один или несколько классов Java, которые не могут быть скомпилированы gavt в javascript.

0 голосов
/ 23 февраля 2013

Если вы используете Maven, то вам это поможет.

maven-gwt-plugin с параметром compileSourcesArtifacts загрузит -sources.jar и скомпилирует модуль GWT без добавления источников в результирующий jar.

Пример pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <dependencies>
        <dependency>
            <groupId>com.my.group</groupId>
            <artifactId>my-artifact</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

    <!-- ... -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>2.5.0</version>
                <!-- ... -->
                <configuration>
                    <compileSourcesArtifacts>
                        <compileSourcesArtifact>com.my.group:my-artifact</compileSourcesArtifact>
                    </compileSourcesArtifacts>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
...