2016-07-08 9 views
1

を失敗した私は、次のパッケージにインポート:Mavenのビルドが

import org.apache.commons.lang.ArrayUtils; 

を私はPOMで、したがって、この依存関係を追加しました:

<dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.4</version> 
    </dependency> 

をその後、私のMavenのビルドが失敗し、これはジェンキンスの私のエラーメッセージです:

11:07:45 INFO: [INFO] 2 errors 
11:07:45 INFO: [INFO] BUILD FAILURE 
11:07:45 INFO: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project stripe: Compilation failure: Compilation failure: 
11:07:45 INFO: [ERROR] /mnt/jenkinsSlaveWorkspace/xmakeProdSlave/workspace/somepath/util/MappingHelper.java:[7,32] package org.apache.commons.lang3 does not exist 
11:07:45 INFO: [ERROR] /mnt/jenkinsSlaveWorkspace/xmakeProdSlave/workspace/somepath/gen/tmp/src/src/main/java/somepath/util/MappingHelper.java:[25,37] cannot find symbol 
11:07:45 INFO: [ERROR] symbol: variable ArrayUtils 
11:07:45 INFO: [ERROR] location: class 

誤ったバージョンまたは矛盾しているバージョンについては、バージョンがダウンロードされたので、私は3.0と2.6を試しましたが、最後は2.4でしたが何も助けませんでした。私はここ数年前にStackOverflowに関する質問を見つけ、Mavenでいくつかのコマンドについて話しました。要点は、EclipseでMavenプラグインを使用しているので、そこに作成されたアドバイスを使用できなかった、同じ問題を抱えている人は誰ですか?

+0

これをしようと何について:コンパイルエラーでパッケージを使用すると、コモンズが必要示し https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.0 – Igorovics

+1

-lang 3.0。あなたがあなたのポームから正確にコピー/ペーストしたなら、あなたは明らかにコモンズ・ラン依存関係を2度持っていて、それらのうちの1つを削除し、残りのものをバージョン3.0に変更します。 – Gimby

答えて

1

あなたのimport文を使用すると、上記の貼り付けとまったく同じである場合、この依存関係を使用します。

<dependency> 
    <groupId>commons-lang</groupId> 
    <artifactId>commons-lang</artifactId> 
    <version>2.6</version> 
</dependency> 

あなたはcommons-langの最新バージョンを使用したい場合は、インポートがなければならない:

import org.apache.commons.lang3.ArrayUtils; 

そして、このための最新の依存関係は次のとおりです。

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.4</version> 
</dependency> 

背景:Sバージョン3の場合、commons-langはJava 5(またはそれ以降)に依存し、下位互換性を壊しました。その結果、プロジェクトではすべてのパッケージの名前が変更され、レガシーコードが機能しなくなり、開発者は追加された機能を並べて使用できるようになりました。同時に、このプロジェクトは、Maven座標を慣例に適合させることに決めました。

もっとここで読む:What's new in Commons Lang 3.0?

2

アーティファクトが別のレポhereに移動されたようです。そのためにMavenの依存関係は次のとおりです。

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.4</version> 
</dependency> 

また、あなたは、右の日食でプロジェクトをクリックして、具体的な目標を実行する「として実行」をマウスオーバーし、「Mavenのビルド...」をクリックする必要がある場合。 「ゴール」フィールドには、古い投稿で見たゴールを入力できます。古いものを削除し、新しい依存関係をインストールし、最後に更新を強制するために、 'クリーンインストール-U'を試すことができます。

-1

あなたはmavenのインポートと少し混乱していると思います。なぜ同じことを2回輸入したのですか?

<dependencies> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.4</version> 
    </dependency> 
</dependencies> 

EDIT:

依存関係の輸入がbracklets

にする必要がありますが、これをインポートしようと、あなたはのgroupIdにidをアーティファクトために等しく、これは確かに間違っています!

+0

Re:「groupIdはアーティファクトIDと等しいですが、これは間違っています_ _」 - [バージョン2.6まで](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22commons- lang%22%20and%20a%3A%22commons-lang%22)そうではありません。 –

0

表示されている依存関係は、表示されているimportで正しくなります。もちろん、それが2回定義されていることを除いて。

しかし、コンパイラエラーは別のimport、具体的にはpackage org.apache.commons.lang3です。その特定のインポートは異なる依存性を必要としますdefinition。そのようなジェネリック医薬品としてJDK 1.5の機能を使用し、可変引数 - - <artifactId>commons-lang3</artifactId>

コモンズ・ラングのバージョンが若干異なるAPIを持ち、Apacheの開発者packagerenamed、古いAPIに依存する既存のコードを壊さないようにするために<artifactId>

関連する問題