Java 使用番石榴10';与GWT 2.4.0的谓词和函数接口
GWT 2.4.0和Guava GWT 10.0.1是否支持Java 使用番石榴10';与GWT 2.4.0的谓词和函数接口,java,gwt,guava,Java,Gwt,Guava,GWT 2.4.0和Guava GWT 10.0.1是否支持谓词s和函数s?两个接口都标记为@GwtCompatible 在调试托管模式下运行项目时,我在使用谓词时收到运行时验证错误: [错误][MyProject]-第XXY行:导入javax.annotation.Nullable 无法解决 [错误][MyProject]-第YYY行:无法将Nullable解析为类型 从其他StackOverflow帖子来看,我认为这些错误不应该要求在Guava版本09的路径中包含JSR305(在路径中包含J
谓词
s和函数
s?两个接口都标记为@GwtCompatible
在调试托管模式下运行项目时,我在使用谓词时收到运行时验证错误:
[错误][MyProject]-第XXY行:导入javax.annotation.Nullable
无法解决
[错误][MyProject]-第YYY行:无法将Nullable解析为类型
从其他StackOverflow帖子来看,我认为这些错误不应该要求在Guava版本09的路径中包含JSR305(在路径中包含JSR305并没有解决问题)
我似乎还收到了几个接口不匹配错误:
[错误][MyProject]-第XXX行:新类型
函数(){}必须实现继承的抽象
方法函数。应用(对象)
[错误][MyProject]-第YYY行:新类型的方法apply(MyType)
函数(){}必须重写或实现超类型
方法
,以及使用谓词时出现的类似错误,我将其作为错误提交:
我的设置有什么问题吗
My Project.gwt.xml文件包含以下行:
<inherits name="com.google.common.collect.Collect" />
<inherits name="com.google.common.base.Base" />
我正在使用Eclipse3.7.1和JavaSE-1.6,这是一种需要在WEB-INF/lib中包含jsr305.jar的类型
就是这样
另一件需要注意的事情是,番石榴的一部分被捆绑在side GWT*.jar中,但它们被放在单独的包com.google.GWT.thirdparty.guava.common中。。。。。
正如eclipse经常发生的那样,在解析导入时,它会抓住错误的导入,这会在运行时造成混乱,因为com.google.gwt.thirdparty.guava中打包的类来自另一个版本,不能被引用
我的建议:
在所有*.java文件中搜索“第三方”子字符串,并用正确的导入替换它-这对我很有用。
更深一点的解释是,在先前版本的Guava jsr305中包含在Guava jar中,但这次发布的版本中,他们将其删除,并且对它的依赖确实出现在库的Maven pom中,但在网站上没有很好的记录。这在用户中造成了很多混乱 我也遇到了同样的问题,并找到了解决办法。问题在于JSR305源代码不是GWT模块的一部分,因此被GWT忽略。要修复它,请执行以下操作:
- 将GWT模块描述符添加到jsr305-2.0.0.jar。在jar内部,至少应包含子文件夹
javax/annotation
中的java源代码,添加一个包含以下内容的文件annotation.gwt.xml
:
就这样!现在,您的eclipse项目将成功编译,开发/托管模式也将正常工作。您的webapp项目中包括了哪个JARguava-10.0.1.jar
或guava-gwt-10.0.1.jar
?@Strelok:两者都在war/WEB-INF/lib中,项目的构建路径(作为非外部jar)函数和谓词用于转换和筛选。检查那些进口。我有一个方法不匹配的问题,因为转换来自某个不可靠的地方,而不是来自google.common。
import com.google.common.base.Function;
import com.google.common.base.Predicate;
<?xml version="1.0" encoding="UTF-8"?>
<module>
<source path="" />
</module>
<inherits name='javax.annotation.Annotation'/>