【问题标题】:guava, gwt and eclipse番石榴、gwt 和日食
【发布时间】:2011-10-17 12:52:11
【问题描述】:

是否可以在 gwt Web 应用程序的客户端代码中使用 guava?如果是这样,如何将番石榴添加到 Eclipse 项目中?

我已将 guava-10.0.1 和 guava-gwt-10.0.1 jar 添加到我的构建路径中,并为每个 jar 添加了源附件,但我仍然收到此错误:

没有可用于类型的源代码 com.google.gwt.thirdparty.guava.common.base.Predicate;你是否 忘记继承所需的模块

【问题讨论】:

    标签: gwt guava


    【解决方案1】:

    好的,看看你的导入行。是这样的吗?

    import com.google.gwt.thirdparty.guava.common.base.Predicate;
    

    错了。将其更改为:

    import com.google.common.base.Predicate;
    

    如果您在 Eclipse 中使用完成辅助 -- Control-Spacebar -- 研究提供的完成列表。不要只选择第一个。向右看,它将以浅灰色文本识别完成的来源。如果您正在查看 thirdparty.guava 一个,请移至下一个,直到您看到 google.common 一个。

    也许有人可以深入了解一下thirdparty.guava 库的用途,它是否需要在构建路径中,以及Guava 库在典型GWT 项目中应该以什么顺序出现。

    【讨论】:

    • thirdparty.guava 是 GWT 内部使用的 Guava 的 rebased 版本(也是旧版本)。这是在您的项目中使用 Guava 的推荐方法(rebase 它),以免遭受版本冲突(又名 classpath hell)。您可以将 Eclipse 配置为自动完成包的黑名单:Java → 外观 → 类型过滤器,添加 com.google.gwt.thirdparth.*(您可能还想添加 java.awt.*
    • 噢,列入黑名单。很酷。总有新东西要学。
    • 你也必须在你的 gwt.xml 中包含一个<inherit name="com.google.common.base.Base" />(对于 Guava 中的其他模块类似:Collect, Primitives)
    • 我现在已将导入行更改为 com.google.common.base.Predicate;并将“继承”行添加到我的 gwt.xml 文件中,但现在出现错误:无法在您的类路径上找到“com/google/common/base/Predicate.gwt.xml”。我已将源 jar 作为 Eclipse 中的源附件添加到每个番石榴 jar 中,但无济于事。
    • 没有人说要添加<inherit name="com.google.common.base.Predicate" />你为什么这样做?
    【解决方案2】:

    与 GWT 兼容的 Guava 类(应该是)用 @GwtCompatible 注释标记。检查来源。

    据此,它是: http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Predicate.html

    您仍然需要按照 Thomas Broyer 的说明将正确的内容放入 .gwt.xml 文件中。

    【讨论】:

    • 我已经添加了上面提出的所有要点,但现在出现错误:无法在您的类路径上找到 'com/google/common/base/Predicate.gwt.xml'。我已将源 jar 作为 Eclipse 中的源附件添加到每个番石榴 jar 中,但无济于事。
    • 愚蠢的问题:你的类路径中有相关的番石榴二进制 jar 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多