我收到以下错误:
[error] ignite - Got exception while starting (will rollback startup routine).
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;
at org.apache.curator.framework.listen.ListenerContainer.addListener(ListenerContainer.java:40)
at org.apache.curator.framework.imps.CuratorFrameworkImpl.start(CuratorFrameworkImpl.java:256)
at org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder.init(TcpDiscoveryZookeeperIpFinder.java:147)
at org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder.registerAddresses(TcpDiscoveryZookeeperIpFinder.java:206)
at org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter.initializeLocalAddresses(TcpDiscoveryIpFinderAdapter.java:61)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoveryImpl.registerLocalNodeAddress(TcpDiscoveryImpl.java:317)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:343)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:1846)
at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:297)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:882)
该项目使用Play Framework,它依赖于Guava 22.0和Apache Ignite,但最新的Apache Ignite版本依赖于Guava 16.0。我正在使用SBT,因此Guava 16.0正在被逐出而支持Guava 22.0。我想知道,是否有另一种解决依赖冲突的方法,以便Ignite使用Guava 16.0,而项目的其余部分使用Guava 22.0。
我目前的想法是将Apache Ignite分离为一个单独的子模块,并将use sbt-assembly to shade the guava 16依赖分隔为一个非托管jar。
答案 0 :(得分:1)
,尝试强制guava版本为16.0
,并查看play是否与该版本兼容。
要强制使用特定版本,请添加到build.sbt
:
dependencyOverrides += "com.google.guava" % "guava" % "16.0"
答案 1 :(得分:0)
答案是在主要项目中创建一个新的子项目,在那里存储Apache Ignite依赖项。子项目必须组装到带有阴影Guava依赖项的jar文件。最后,在主项目上说它依赖于先前创建的jar文件。