2015-02-06 22 views
7

Projemde aşağıdaki iki bağımlılıkları var:Kullanım birden Guava versiyonları

[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ extraction --- 

[INFO] +- com.google.javascript:closure-compiler:jar:v20141215:compile 
[INFO] | +- com.google.javascript:closure-compiler-externs:jar:v20141215:compile 
[INFO] | +- args4j:args4j:jar:2.0.26:compile 
[INFO] | +- com.google.guava:guava:jar:18.0:compile 
[INFO] | +- com.google.code.gson:gson:jar:2.2.4:compile 
[INFO] | \- com.google.code.findbugs:jsr305:jar:1.3.9:compile 
[INFO] +- org.apache.hadoop:hadoop-common:jar:2.4.0:compile 
[INFO] | +- org.apache.hadoop:hadoop-annotations:jar:2.4.0:compile 
[INFO] | | \- jdk.tools:jdk.tools:jar:1.7:system 
[INFO] | +- (com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 18.0) 
[INFO] | +- ... 
: Eğer bağımlılık ağacında görebileceğiniz gibi

<dependency> 
    <groupId>com.google.javascript</groupId> 
    <artifactId>closure-compiler</artifactId> 
    <version>v20141215</version> 
    <exclusions> 
     <exclusion> 
      <groupId>com.google.protobuf</groupId> 
      <artifactId>protobuf-java</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-common</artifactId> 
    <version>2.4.0</version> 
</dependency> 

, ikisi de Guava farklı bir sürümünü içeriyor

iyi bilinen bir sorun Guava geriye doğru uyumlu olmamasıdır. Bu yüzden her iki kavanoz da ihtiyacım var.

hatası - alıyorum - şudur:

Error: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapreduce.lib.input.FileInputFormat 

Bu zaten burada olduğunu bildirdi: https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/d5_HqUSvVl4

: https://issues.apache.org/jira/browse/HADOOP-10961

Üstelik onlar gölgeleme Maven eklentisi kullanarak idare etmek önermek

burada çalıştı Hangi:

<build> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.6</source> <!-- If you want to use Java 8, change this to "1.8" --> 
      <target>1.6</target> <!-- If you want to use Java 8, change this to "1.8" --> 
     </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.3</version> 
     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
        <goal>shade</goal> 
       </goals> 
       <configuration> 
        <relocations> 
         <relocation> 
          <pattern>com.google</pattern> 
          <shadedPattern>project.shaded.com.google</shadedPattern> 
         </relocation> 
        </relocations> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
</build> 

Yine de aynı hatayı alıyorum.

herkes bu Maven konuda bana yardımcı olabilir misiniz?

Belki çıkan JAR içine bakmak ve doğru şekilde inşa edilmiştir olmadığını görmelisiniz,

+0

bunu çözdünüz mü? – MFARID

cevap

0

Felix teşekkür ederiz. Yerel maven repolarının temizlenmesi problemi çözebilir. Bunu açık bir bağımlılık olarak Hadoop'un 2.4 ile fonksiyonları Guava son sürümünü bulma ve dahil öneririz

+0

Yerel maven repo'yu temizledim ve ayrıca Guava sınıflarını kavanozun karşılık gelen klasöründe bulabilirim ^^ – Felix

1

. Daha sonra Guava'yı kapatma derleyicisinden ve Hadoop deps'lerinden geçici olarak getirilmeyi hariç tutun. bu çözüm kapatma derleyici ile çalışan Guava 16 bağlıdır Tabii Guava 16

bkz: hala Kronometre sınıfına sıfır args yapıcı olduğu gibi

Ben V16 öneririm.

+0

Sorun bu. Kapatma paketi Guava 18 – Felix

+0

v20140303'ün sadece Guava 16'yı gerektirmesine ihtiyaç duyar. Bir versiyon belirtilse bile mutlaka mutlak bir gereklilik olmayabilir. – Will

+0

Gerçekten en son sürümü kullanmak istiyorum :( – Felix