我试图在GWT项目中使用Guava但没有成功(确切地说是HashMultimap).我得到了一个永不停止的类堆栈跟踪列表:
每个堆栈跟踪沿着以下行:
查看代码,每个抛出错误的文件包括:
import javax.annotation.Nullable;
并且,查看guava-src-r07.jar,每个提到的类都使用@Nullable注释.
我正在使用JDK6并查看JDK6 javadoc并且......好吧,我找不到任何这样的注释.我可以让这些库与GWT项目和JDK6一起使用吗?
PS - 你在那边使用什么版本的Java?
sly*_*7_7 14
嗯...我认为这是你正在寻找的jsr305.看一眼
http://www.findjar.com/jar/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.html
这里必须更好:http://code.google.com/p/guava-libraries/source/browse/#svn/trunk/lib 我在哪里看到@Nullable注释
Bla*_*ade 12
如上所述,使用guava 10.0.1时问题似乎得到解决,它对JSR305库有额外的依赖性.
或者,要添加到Maven的缺少库的ID是com.google.code.findbugs:jsr305:1.3.9,所以应该通过在适当的位置将以下依赖项添加到pom.xml来修复构建配置(警告 - 我没有测试这个):
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
更新:用户@ips建议添加,<scope>provided</scope>因为在运行时不需要jsr305 jar,并且更新到版本2.0.1.我知道第一个改变是有道理的,我想版本更新也是如此.根据我的经验,使用<scope>provided</scope>Scala创建的问题,但这是一个单独的问题.
您需要获取JSR 305 JAR,但此外,您需要包含@Nullable注释源代码作为GWT编译器的食物.
假设您的项目位于" com/example/myproject/
创建文件"下:com/example/myproject/annotation/javax/annotation/Nullable.java
具有以下内容:
package com.example.myproject.annotation.javax.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierNickname;
import javax.annotation.meta.When;
@Documented
@TypeQualifierNickname
@Nonnull(when = When.UNKNOWN)
@Retention(RetentionPolicy.RUNTIME)
public @interface Nullable {
}
Run Code Online (Sandbox Code Playgroud)
将行添加到MyProject.gwt.xml:
<super-source path="annotation"/>
Run Code Online (Sandbox Code Playgroud)
你很高兴去.