2013-07-01 5 views
2

En Clojure, si je veux lancer un cluster de test en utilisant l'utilitaire de test de HBase, je dois annoter mes dépendances avec:Clojure/HBase: Comment importer HBaseTestingUtility dans v0.94.6.1

[org.apache.hbase/hbase "0.92.2" :classifier "tests" :scope "test"] 

Première de tout, je n'ai aucune idée de ce que cela signifie. Selon le projet d'exemple leiningens.clj

;; Dependencies are listed as [group-id/name version]; in addition 
;; to keywords supported by Pomegranate, you can use :native-prefix 
;; to specify a prefix. This prefix is used to extract natives in 
;; jars that don't adhere to the default "<os>/<arch>/" layout that 
;; Leiningen expects. 

Question 1: Qu'est-ce que cela signifie?

Question 2: Si je mets à jour la version:

[org.apache.hbase/hbase "0.94.6.1" :classifier "tests" :scope "test"] 

Ensuite, je reçois un ClassNotFoundException

Exception in thread "main" java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration 

ce qui se passe ici et comment puis-je résoudre ce problème?

Répondre

2

toutes les paires clé/valeur ajoutée à une déclaration de dépendance sont utilisés comme arguments à la bibliothèque de grenade clojure

les clés reconnus sont répertoriés dans la source ici: in the source to pomagranate (pour référence ultérieure qui est un lien vers la détermination de la fonction -artifacts *)

the maven pom docs may also be helpful

: champ d'application décrit les conditions dans lesquelles la dépendance est utilisée, donc: champ « test » semble indiquer que la dépendance est seulement tiré en tout en testant

: classifier semble indiquer un élément supplémentaire distinguant les versions

Je spécule que la résolution de dépendance pour la nouvelle version de hbase peut avoir un pom mal configuré qui ne déclare pas ses dépendances correctement. Essayez de trouver l'information pour org.apache.hadoop.hbase.HBaseConfiguration et exigez le paquet manuellement.

1

Leinigen utilise le Maven dependency mechanism. Lisez ce lien pour comprendre les différentes portées. Le "classifier" est un jeton faisant partie des coordonnées de dépendance, de sorte qu'un groupe de fichiers JAR/zip puisse faire partie de la même version logique, mais déclaré comme dépendances distinctes dans votre fichier pom.xml . Donc, dans ce cas, "tests" est un artefact HBase distinct de 0.94.6.1 qui contient les tests.

Vous pouvez le voir en action en pointant votre navigateur vers le Maven emplacement repo "Central" pour cette version de HBase:

http://repo1.maven.org/maven2/org/apache/hbase/hbase/0.94.6.1/

Vous pouvez rechercher le maven repo "central" ici:

https://repository.apache.org/

ou

http://mvnrepository.com/

Sur ClassNotFOundException - d'accord avec le bruiteur. Votre meilleur pari est de trouver la dépendance (jar) qui contient cette classe et l'ajouter explicitement à votre configuration de dépendance de projet.

Habituellement je fais une recherche google pour le nom de classe et « pot » à savoir https://www.google.com/search?q=jar+org.apache.hadoop.hbase.HBaseConfiguration

Questions connexes