23 votes

Goyave r07, GWT et javax.annotation.Nullable

Je suis en train d'utiliser, de Goyave, dans un projet GWT sans succès (un HashMultimap, pour être précis). Je reçois une liste interminable de stacktraces pour les classes:

  • com.google.commun.collecter.ComparisonChain
  • com.google.commun.collecter.ForwardingSortedSetMultimap
  • com.google.commun.collecter.La commande
  • ...

Chaque trace de la pile est le long des lignes de:

  • ligne xx: l'import javax.annotation ne peut pas être résolu
  • ligne xx: les valeurs null ne peut pas être résolu à un type
  • ligne xx: les valeurs null ne peut pas être résolu à un type
  • ligne xx: les valeurs null ne peut pas être résolu à un type
  • ...

En regardant le code, chaque fichier qui renvoie une erreur:

import javax.annotation.Les valeurs null;

et, en regardant les guava-src-r07.jar, chacune des classes utilise un @Nullable annotation.

Je suis en utilisant le JDK6 et en regardant le JDK6 javadoc et...eh bien, je ne peux pas trouver une telle annotation. Puis-je obtenir ces bibliothèques à travailler avec un projet GWT et JDK6?

P. S. - Quelle version de Java utilisez-vous là-bas?

14voto

sly7_7 Points 9504

Hum... je pense que c'est le jsr305 vous êtes à la recherche pour. Jetez un oeil à

http://www.findjar.com/jar/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.html

Il doit être mieux ici: http://code.google.com/p/guava-libraries/source/browse/#svn/trunk/lib là où je vois l' @Nullable annotation

12voto

Blaisorblade Points 3951

Comme écrit ci-dessus, le problème semble être résolu lors de l'utilisation de goyave 10.0.1, qui a une dépendance sur le JSR305 de la bibliothèque.

Sinon, l'ID de la bibliothèque manquante pour ajouter à Maven est - com.google.code.findbugs:jsr305:1.3.9, de sorte que la configuration de build doit être fixé par adjonction de la dépendance à pom.xml à l'endroit approprié (attention, je ne l'ai pas tester cela):

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>2.0.1</version>
    <scope>provided</scope>
</dependency>

Mise à jour: Utilisateur @ips a suggéré d'ajouter <scope>provided</scope> depuis le jsr305 pot n'est pas nécessaire lors de l'exécution, et la mise à jour vers la version 2.0.1. Je sais que le premier changement de sens, et je pense que la version mise à jour aussi. Dans mon expérience, à l'aide de <scope>provided</scope> créé des problèmes pour Scala, mais c'est une question distincte.

5voto

Tomer Points 141

Vous devez obtenir la JSR 305 POT, mais en plus, vous devez inclure l' @Nullable d'annotation de code source de nourriture pour le compilateur GWT.

En supposant que votre projet est en cours d' com/example/myproject/ Créer un fichier: com/example/myproject/annotation/javax/annotation/Nullable.java Avec le contenu suivant:

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 {

}

Ajouter la ligne MyProject.gwt.xml:

<super-source path="annotation"/>

Et vous êtes bon pour aller.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X