2016-09-25 8 views
0

現在、ScalaでGephi Javaライブラリの使用が必要なPlay Frameworkアプリケーションを構築しています。Playアプリケーション内でのGephiの使用

私はSBTのマネージド依存関係としてGephiを追加しようとしましたが、SBTはGephiのすべての依存関係を解決できません。これはknown issueです。私は単に、lib/フォルダにGephi JAR全体をアンマネージ依存として追加しようとしました。 IntelliJはライブラリをうまく検出し、アプリケーションを完全にコンパイルすることができます。問題は、例外がアプリケーションを起動するとすぐに発生しており、依存性注入に関連すると思わ:まだ私lib/フォルダに座ってJARを持ちながら、私は、コード内でGephiのすべての言及を削除しようとした

play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;] 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:174) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:126) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:126) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:124) 
    at scala.util.Success.flatMap(Try.scala:231) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:124) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:116) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 
    at com.google.common.cache.CacheBuilder.getKeyStrength(CacheBuilder.java:529) 
    at com.google.common.cache.LocalCache.<init>(LocalCache.java:242) 
    at com.google.common.cache.LocalCache$LocalManualCache.<init>(LocalCache.java:4718) 
    at com.google.common.cache.CacheBuilder.build(CacheBuilder.java:807) 
    at com.google.inject.internal.WeakKeySet.<init>(WeakKeySet.java:55) 
    at com.google.inject.internal.InheritingState.<init>(InheritingState.java:67) 
    at com.google.inject.internal.InjectorShell$Builder.getState(InjectorShell.java:209) 
    at com.google.inject.internal.InjectorShell$Builder.lock(InjectorShell.java:115) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103) 
    at com.google.inject.Guice.createInjector(Guice.java:96) 

ただし、同じ例外が発生します。

このプロジェクトでは、Gephiは本当に重要なので、別のライブラリに進むことはできません。何か案は?

+0

'ベータークリーンコンパイルrun' – pamu

+0

を行う実行私はすでにそれを試してみましたが、残念ながら、それはしませんでした/ – francoisr

+0

問題は、使用しているキャッシュが原因です。完全なスタックトレースを参照してください – pamu

答えて

1

、そのジャーFOM libを削除し、それらの二つの追加のレゾルバ(build.sbt中)

resolvers += "NetBeans" at "http://bits.netbeans.org/nexus/content/groups/netbeans/" 

resolvers += "gephi" at "https://raw.github.com/gephi/gephi/mvn-thirdparty-repo/" 

を追加し、activator update

+1

これでビルドはうまくいきますが、何らかの理由で' 'gephi-toolkit''のクラスにアクセスできません。例えば、 '' org.gephi.graph.api.GraphController''は、 '' org.gephi.graph.api.Node'のような同じパッケージから他のクラスにアクセスすることはできますが、存在しません。 – francoisr

+0

IDEコンフィグレーションの問題( 'org.gephi.graph.api.GraphController'のインポートを追加してコンパイルすれば動作しますか?)もしそうなら、元の問題とあまり関係がないので、別の質問をするのが最善でしょう。 – Salem

+0

残念ながら、CLIでsbtを使用してIntelliJの外部でコンパイルしたとしても、追加されたインポートではコンパイルされません。 – francoisr

関連する問題