GWT编译bean引用(类型没有可用的源代码)

GWT编译bean引用(类型没有可用的源代码),gwt,smartgwt,gwt-ext,Gwt,Smartgwt,Gwt Ext,我在我的应用程序中使用gwt2.0.3版本。此应用程序中有两个项目。一个用于客户端,另一个用于服务器端。在客户端项目中,我提供了服务器端项目的参考。因此,我能够将服务器端的所有方法和属性输入客户端 我的所有bean都位于服务器端。因此,当我在客户端导入bean时,它不会产生任何问题 但在编译时,它给出了引用问题。它给出了如下问题: [错误] “文件:/E:/NTWrokSpace1June2011/AdminClient/src/com/nextenders/client/util/factor

我在我的应用程序中使用gwt2.0.3版本。此应用程序中有两个项目。一个用于客户端,另一个用于服务器端。在客户端项目中,我提供了服务器端项目的参考。因此,我能够将服务器端的所有方法和属性输入客户端

我的所有bean都位于服务器端。因此,当我在客户端导入bean时,它不会产生任何问题

但在编译时,它给出了引用问题。它给出了如下问题:

[错误] “文件:/E:/NTWrokSpace1June2011/AdminClient/src/com/nextenders/client/util/factory/DocumentMetadataFactory.java”中的错误

[错误]第26行:没有可用于com.nextenders.facademployment.beans.metadata.Table类型的源代码;您是否忘记继承所需的模块

大家好 我在我的应用程序中使用gwt2.0.3版本。此应用程序中有两个项目。一个用于客户端,另一个用于服务器端。在客户端项目中,我提供了服务器端项目的参考。因此,我能够将服务器端的所有方法和属性输入客户端

我的所有bean都位于服务器端。因此,当我在客户端导入bean时,它不会产生任何问题

但在编译时,它给出了引用问题。它给出了如下问题:

[错误] “文件:/E:/NTWrokSpace1June2011/AdminClient/src/com/nextenders/client/util/factory/DocumentMetadataFactory.java”中的错误

[错误]第26行:没有可用于com.nextenders.facademployment.beans.metadata.Table类型的源代码;您是否忘记继承所需的模块

这里AdminClient是我的客户机项目

服务器端的com.nextenders.facademployment.beans.metadata包。在类中导入时,它不会给出任何问题

但编译时会产生问题


请帮我解决这个问题。

错误消息表明该类

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

引用(导入)gwt无法编译为javascript的一个或多个java类

通常的方法是将项目分成三个包:
服务器
客户端
共享

client
中放置GWT代码,在
server
中放置服务器代码。在
shared
中,您放置了同时属于客户端和服务器的代码:最明显的是通过RPC的类

你必须告诉GWT你的消息来源在哪里。您必须在.gwt.xml中引用这两个文件(如果您的gwt.xml文件位于客户端上方的文件夹中,并且是共享的):


我怀疑部分问题在于模块定义。GWT编译器将查看您在模块文件中定义的源路径,以确定尝试编译为Javascript的类。您可能是从客户机代码中引用表类,但该bean不存在于模块xml文件中指定的任何源路径中


将bean放在单独的项目中可能会导致问题,但我自己还没有测试过。模块文件中指定的源路径是相对路径,而不是我认为的包路径,因此它可能根本不起作用。

如果使用Maven,它将对您有所帮助

with参数将下载
-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>

com.my.group
我的神器
1
org.codehaus.mojo
GWTMaven插件
2.5.0
com.my.group:我的神器

这个问题在我开始编译时就出现了。如果我在客户端项目中放了一罐bean,它就可以正常工作了。当时它得到了引用。我不知道eclipse在导入它们时没有发现任何问题,但是,在编译GWT编译器时,无法获得bean的引用???没有GWT编译器能够简单地交叉编译从java到javascript的所有内容,这是有限制的。例如,当客户端导入java.util.calendar时,您不能在客户端使用任何java类,因为gwt无法将java.util.calendar编译为javascript…我还尝试在客户端放置一个Jar bean,但它仍然不起作用。任何解决方法??最好的办法是按照Peter的建议将服务器和客户端代码保持在同一个项目设置中。这允许Google编译器对正确的目录进行爬网。我认为它没有能力选择性地爬网到jar文件中以找到与客户端兼容的代码。我通过其他一些技巧解决了该解决方案。因此,我想分享它。我创建了另一个gwt项目,并将所有bean放入该项目中。按照此步骤,右键单击项目>选择属性>库选项卡>添加其他项目,然后转到项目选项卡>添加其他项目将其放入project.gwt.xml文件->转到调试配置>项目>类路径>用户条目>添加项目,然后添加src文件夹>转到高级>添加文件夹>选择src文件夹
<?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>