2

Clojure では、hbase テスト ユーティリティを使用してテスト クラスターを開始する場合、依存関係に次のような注釈を付ける必要があります。

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

まず、これが何を意味するのかわかりません。leiningens のサンプル project.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.

質問 1: どういう意味ですか?

質問 2: バージョンをアップグレードした場合:

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

次に、ClassNotFoundException を受け取ります

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

ここで何が起こっていますか?どうすれば修正できますか?

4

2 に答える 2

2

依存関係の宣言に追加されたキーと値のペアは、clojure pomegranate ライブラリの引数として使用されます。

認識されたキーは、ここのソースにリストされています: pomagranate のソース(関数 resolve-artifacts へのリンクである将来の参照用)

Maven pom docs も役立つ場合があります

:scope は、依存関係が使用される条件を記述しているため、 :scope "test" は、依存関係がテスト中にのみ取り込まれることを示しているように見えます。

:classifier は、バージョンを区別する追加の要素を示しているようです

新しい hbase バージョンの依存関係の解決には、依存関係を適切に宣言していない pom の構成が不十分である可能性があると推測します。org.apache.hadoop.hbase.HBaseConfiguration の情報を見つけて、パッケージを手動で要求してみてください。

于 2013-07-02T15:12:35.050 に答える