使用Guava 10的Predicate和Function接口与GWT 2.4.0

Tod*_*ler 7 java gwt guava

在GWT 2.4.0和Guava GWT 10.0.1中是否支持Predicates和Functions?两个接口都标记为@GwtCompatible.

在调试托管模式下运行项目时,我在以下情况下收到运行时验证错误Predicate:

[错误] [MyProject] - 第XXY行:导入javax.annotation.Nullable无法解析

[错误] [MyProject] - 行YYY:Nullable无法解析为某种类型

从其他StackOverflow帖子中,我相信这些错误不应该要求包括JSR 305在路径中的Guava版本09(包括路径中的JSR 305无论如何都没有解决问题).

我似乎也收到了几个接口不匹配错误:

[错误] [MyProject] - 第XXX行:类型new Function(){}必须实现继承的抽象方法Function.apply(Object)

[错误] [MyProject] - 行YYY:new函数(){}的方法apply(MyType)必须覆盖或实现超类型方法

,以及Predicate我作为错误提交的类似错误:http://code.google.com/p/guava-libraries/issues/detail? id = 765

关于我的设置可能出错的任何想法?

我的Project .gwt.xml文件包含以下行:

<inherits name="com.google.common.collect.Collect" />
<inherits name="com.google.common.base.Base" />
Run Code Online (Sandbox Code Playgroud)

我的java文件包含以下导入:

import com.google.common.base.Function;
import com.google.common.base.Predicate;
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse 3.7.1和JavaSE-1.6

Bor*_*ich 0

这是一种已知的错误,您需要在 WEB-INF/lib 中添加 jsr305.jar。

另一件需要注意的事情是,番石榴的部分内容被捆绑在 GWT*.jar 中,但它们被放在单独的包 com.google.gwt.thirdparty.guava.common 中......并且通常如此Eclipse 发生的情况是,在解析导入时,它会获取错误的导入,这会在运行时导致混乱,因为打包在 com.google.gwt.thirdparty.guava 中的类来自另一个版本,并且不得引用。

我的建议:

对所有 *.java 文件进行文本搜索以查找“第三方”子字符串,并将其替换为正确的导入 - 它对我有用。

更深入一点的解释是,在以前版本的 Guava jsr305 中包含在 guava jar 中,但在这个版本中,他们将其取出,并且对它的依赖确实出现在 lib 的 Maven pom 中,但在网站上没有详细记录。这给用户造成了很多困惑。