在GWT 2.8项目中使用Guava 20.0进行dummys

时间:2016-11-05 17:40:05

标签: gwt guava

我正在尝试在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

对我来说有点不清楚。 以前为了让Guava工作,我补充说;

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

到我项目的gwt.xml。

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

如果有关于使用番石榴的这些更改我缺少一些文档,我很抱歉,但我在番石榴网站上找到的所有文件都提到需要使用GWT2.8,我已经这样了。

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

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

更新

下面是如何设置我的类路径;

Eclipse classpaths setup

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

好的,按照这里的建议; 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)

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