2017-07-05 4 views
0

JPMMLライブラリ(guava)で作業しているときに、異常な実行時エラーが発生しました。エラー:com.google.common.cache.CacheBuilder.from(Lcom/google/common/cache/CacheBuilderSpec;)Lcom/google/common/cache/CacheBuilder;

それは例外を投げ始めた

<dependency> 
     <groupId>org.jpmml</groupId> 
     <artifactId>pmml-evaluator</artifactId> 
     <version>1.3.6</version> 
     </exclusions> 
    </dependency> 

以下のように私は私ののpom.xmlにjpmml関連の依存関係を使用していました。それから私は以下のようにしてみました。

<dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>19.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jpmml</groupId> 
     <artifactId>pmml-evaluator</artifactId> 
     <version>1.3.6</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.google.guava</groupId> 
       <artifactId>guava</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

私はグアバの11.xの/ 12.xの/ 15.x/18.x/19.x/20.xバージョンで試してみました。しかし、まだ、私は同じ例外に直面しています。私はgoogleを経由し、人々はguava-19.0バージョンを使用しており、それは彼らのために働いたが、私はこれを達成することができません。誰か私に何かが不足していると言ってもらえますか?

下記のスタックトレースをご覧ください。

java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.from(Lcom/google/common/cache/CacheBuilderSpec;)Lcom/google/common/cache/CacheBuilder; 
    at org.jpmml.evaluator.CacheUtil.newCacheBuilder(CacheUtil.java:97) 
    at org.jpmml.evaluator.CacheUtil.buildLoadingCache(CacheUtil.java:90) 
    at org.jpmml.evaluator.ModelEvaluator.<clinit>(ModelEvaluator.java:660) 
    at org.jpmml.evaluator.ModelEvaluatorFactory.newModelEvaluator(ModelEvaluatorFactory.java:80) 
    at org.jpmml.evaluator.ModelEvaluatorFactory.newModelEvaluator(ModelEvaluatorFactory.java:66) 
..... 
..... 
+0

POMのGuavaの本当の古いバージョン(12.0より前)を引き出していないことは確かですか?おそらく、ある種の過渡的な依存関係でしょうか? –

+0

私はそれを確認しました私は他のバージョンのguavaライブラリを使用していません。 – Manindar

+2

'mvn dependency:tree -Dverbose |のようなものを試しましたか?グレープグアバ '? –

答えて

1

あなたはMavenのポンポンで正しいバージョンを持っているように見えますが、実行時に、それは古いバージョンを選んでいる、それは実行時に正しいバージョンを選ぶことを確認してください。データノードのクラスパスを確認してください。

+0

私はcloudera hadoopを使用しています.cloudera自体でデータノードにclass_pathを与えています。私は、コードで使用される必要があるjar(guava)のバージョンを選択するために、pomでいくつかの設定を行うべきだと思います。 – Manindar

+0

この場合、すべての依存関係を持つUber jarを作成します。 – Rakesh

+0

それは今働いた。私はこのコードを使用しました。 conf.setBoolean(MRJobConfig.MAPREDUCE_JOB_USER_CLASSPATH_FIRST、true); – Manindar

関連する問題