GWT 没有可用于类型 [userClassName] 的源代码

Posted

技术标签:

【中文标题】GWT 没有可用于类型 [userClassName] 的源代码【英文标题】:GWT No source code is available for type [userClassName] 【发布时间】:2013-05-28 14:07:38 【问题描述】:

好的,这个错误从今天早上开始出现。我有一个名为“snmp-jobs”的Maven 项目,该项目以前仅用于传送 SNMP 通信。由于最近所做的更改,这个项目现在也包含DTO 类。此外,现在有两个主要的子包:sharedserver,其中第一个包含这些 DTO 和第二个服务器端代码。该项目还有.gwt.xml 文件,其中指定:

<source path="shared"/>

另一个名为“mib”的项目引用“snmp-jobs”并在客户端代码中使用这些 DTO 类。更准确地说,有问题的类称为 MibRow。

当我编译 GWT 项目时它报告错误:

类型“rs.jp.jobs.shared.MibRow”没有可用的源代码;你忘了继承一个必需的模块吗?

我了解这是非常常见的错误。据我了解,GWT 找不到 MibRow 类的源代码,也无法继续进行 GWT 编译。这是真的?

我已经尝试了所有的按部就班的建议,但到目前为止都没有解决问题。任何人都可以给我提示下一步该尝试什么?

非常感谢!

更新:

我已经使用-Dgwt.logLevel=DEBUG 从控制台运行编译,并且有两行突出:

Loading inherited module 'rs.jp.jobs.Jobs'
[INFO]          Module location: USER_DIR/.m2/repository/rs/jp/jobs/snmp-jobs/1.0.4-SNAPSHOT/snmp-jobs-1.0.4-SNAPSHOT.jar!/rs/jp/jobs/Jobs.gwt.xml

Errors in 'rs/jp/mib/client/commands/mib/report/DataResponse.java'
[INFO]          Line 10: No source code is available for type rs.jp.jobs.shared.MibRow; did you forget to inherit a required module?

显然,GWT 设法找到了 Jobs 模块,但不知道 shared 包:-/

【问题讨论】:

gwt.xml 文件相对于“共享”文件夹的位置是否正确?除了常规依赖之外,您还有 sources 依赖吗? 是的,我已经确定相对路径是正确的。但是,我没有指定 classifier。我的一个朋友还建议我没有在我的pom.xml 中启用gwt-maven-plugin,所以这是我需要尝试的两个选项。谢谢,我会这样做,如果结果很好,我会告诉你:) @wytten 我今天早上使用gwt-maven-plugin 成功解决了这个问题。不过,谢谢你的建议;) 【参考方案1】:

好的,我已经设法解决了这个问题。我在snmp-jobs 项目中缺少来自pom.xml 的以下XML 块:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

希望这对某人有帮助:)

【讨论】:

以上是关于GWT 没有可用于类型 [userClassName] 的源代码的主要内容,如果未能解决你的问题,请参考以下文章

没有可用于 java.security.InvalidParameterException 类型的源代码

Maven - 添加源依赖;但 Eclipse 中没有可用于 GWT 编译的 Java 源文件

没有可用于类型的源代码。你忘了继承一个必需的模块吗

GWT 2.2 + JPA 问题

GWT 客户端中的记录器

如何在 GWT 中为 AppEngine SystemProperty 继承模块