【问题标题】:Using Guava 20.0 in a GWT 2.8 project for dummys在 GWT 2.8 项目中使用 Guava 20.0
【发布时间】:2016-11-05 17:40:05
【问题描述】:

我正在尝试在 GWT 2.8 项目中使用 Guava 20.0,但是在尝试编译时出现错误;

 ...
     [ERROR] Errors in 'com/google/common/base/Function.java'
        [ERROR] Line 64: CanIgnoreReturnValue cannot be resolved to a type
        [ERROR] Line 18: The import com.google.errorprone cannot be resolved
     [ERROR] Errors in 'com/google/common/base/Supplier.java'
 ...

以及我在网上找到的解决方案;

Including Guava GWT in GWT app

https://github.com/gwtproject/gwt/issues/9323

对我来说有点不清楚。 以前为了让番石榴工作,我添加了;

<inherits name="com.google.common.collect.Collect" />.

到我项目的 gwt.xml。

我假设这已经改变,我需要再添加两个? 或者我还需要下载单独的 *.jars 吗? (我需要像 guava-gwt 那样使用这些 jar 的 gwt 版本吗?)

如果我缺少一些关于使用 guava 的这些更改的文档,我深表歉意,但我在 guava 网站上只能找到需要使用 GWT2.8 的参考,我已经使用了。

因此,欢迎对当前(2016 年 11 月)在新 GWT 中使用新番石榴的方法提出任何建议。 谢谢,

注意事项;我只使用 Eclipse,没有使用 Maven 或 Gradle 等。 我的项目也只是客户端,没有服务器。

更新;

这是我的类路径的设置方式;

【问题讨论】:

    标签: gwt guava


    【解决方案1】:

    Guava's pom.xml 开始,您需要 jsr305(版本 1.3.9,来自 parent POM)、error_prone_annotations (2.0.12) 和 j2objc-annotations (1.1)。

    您可以从https://search.maven.org下载所有这些

    另见https://github.com/google/guava/issues/2622

    【讨论】:

    • 谢谢,我下载了所有 3 个 jar,虽然它们似乎不适用于 gwt?我看不到任何 *.gwt.xml 文件,因此继承语句失败。
    • 它们只包含注释,所以我认为您实际上不需要 GWT 模块甚至源代码。将不得不检查。
    • 谢谢。如果我将 jar 放在类路径上(通过 eclipses 接口),但不将它们添加到继承中,我会得到原始错误。很明显,这里还需要一些其他步骤。哦,如果它有所作为;这是我尝试编译的时候。
    • 还是没有运气。也许我只是设置错误。我附上了我的类路径设置的图像。
    • 想一想,jar 和 -source.jar 之间的版本存在一些差异。 (例如,maven 存储库似乎没有 1.3.9s 版本的源 jar)。这有关系吗?我应该对两者都使用较新的版本吗?
    【解决方案2】:

    好的,按照这里的建议; https://groups.google.com/forum/#!topic/google-web-toolkit/gPlwknBXlXs

    如果我用内容创建两个相同的 gwt.xml 文件,它确实可以工作排序

    <module>
    <inherits name="com.google.gwt.core.Core" />
    <source path=""/>
    <source path="concurrent"/>
    <super-source path="super" />
    </module>
    

    然后我将这些文件放入包中;

    com.google.errorprone.annotations
    com.google.j2objc.annotations.Annotations
    

    并添加;

     <inherits name="com.google.errorprone.annotations.Annotations" />
     <inherits name="com.google.j2objc.annotations.Annotations" />
    

    到我的主要项目 gwt.xml

    这有助于编译项目,所以从技术上讲它回答了这个问题。

    但是;

    a) 这似乎是一个 hackjob。

    b) 虽然没有错误,但现在有 大量 似乎仍然与番石榴相关的警告。 例如;

    Resolving com.google.common.collect.AbstractMapBasedMultiset
      Found type 'com.google.common.collect.AbstractMapBasedMultiset'
         Found type 'com.google.common.collect.AbstractMultiset'
            Resolving method add
               [WARN] Ignoring unresolvable annotation type com.google.errorprone.annotations.CanIgnoreReturnValue
            Resolving method add
               [WARN] Ignoring unresolvable annotation type com.google.errorprone.annotations.CanIgnoreReturnValue
            Resolving method remove
               [WARN] Ignoring unresolvable annotation type com.google.errorprone.annotations.CanIgnoreReturnValue
            Resolving method remove
            ...
            ...(many pages of this and identical errors in other classes)
    

    出于这个原因,我认为这个问题还没有真正得到回答,更多的是这只是一个当前的解决方法。

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多