简体   繁体   English

将嵌入式 Cassandra 与突变测试结合使用时出现 NoSuchMethodError

[英]NoSuchMethodError when using Embedded Cassandra with Mutation Tests

Recently while merging in some new unit tests into my working branch, I started seeing this error:最近在将一些新的单元测试合并到我的工作分支时,我开始看到这个错误:

Exception (java.lang.NoSuchMethodError) encountered during startup: com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService()Lcom/google/common/util/concurrent/ListeningExecutorService;
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService()Lcom/google/common/util/concurrent/ListeningExecutorService;
    at org.apache.cassandra.index.SecondaryIndexManager.<clinit>(SecondaryIndexManager.java:125)
    at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:405)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:623)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:597)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:588)
    at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:417)
    at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:324)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:129)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:106)
    at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:935)
    at org.apache.cassandra.service.StartupChecks$10.execute(StartupChecks.java:422)
    at org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:125)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:200)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:602)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.lambda$startEmbeddedCassandra$1(EmbeddedCassandraServerHelper.java:150)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Here's the offending test class:这是有问题的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = { MyApplication.class })
@TestExecutionListeners(listeners = { CassandraUnitDependencyInjectionTestExecutionListener.class, DependencyInjectionTestExecutionListener.class })
@EmbeddedCassandra(timeout = 100000)
@CassandraDataSet("indexer.cql")
@ActiveProfiles("test")
public class MyDaoTest {

    @Autowired
    MyDao myDao;


    @Test ...
}

I was able to verify that the unit tests pass as written by running mvn test -DskipMutation , so this appears to be an issue when using embedded Cassandra in conjunction with mutation tests, but I'm not very familiar with either of these technologies.我能够通过运行mvn test -DskipMutation来验证单元测试是否通过编写,因此当将嵌入式 Cassandra 与突变测试结合使用时,这似乎是一个问题,但我对这两种技术都不太熟悉。

Has anyone ever run into this issue before, and could you provide some pointers on resolving this issue (without simply disabling mutation tests)?以前有没有人遇到过这个问题,你能提供一些解决这个问题的指针吗(而不是简单地禁用突变测试)?

The most probable cause of this error is that you have Guava version below 18.0 where the MoreExecutors.newDirectExecutor method was added - it's required for Cassandra.此错误的最可能原因是您的 Guava 版本低于 18.0,其中添加了MoreExecutors.newDirectExecutor 方法- Cassandra 需要它。 Run the mvn dependency:tree on your project and check for versions of Guava that you have in your project.在您的项目上运行mvn dependency:tree并检查您项目中的 Guava 版本。 If any of the dependencies are dependent on older version of Guava, try to exclude Guava from that dependency (although this may break your code - in this case, try to find dependency that doesn't use that old version of Guava).如果任何依赖项依赖于旧版本的 Guava,请尝试从该依赖项中排除 Guava(尽管这可能会破坏您的代码 - 在这种情况下,请尝试查找不使用旧版本 Guava 的依赖项)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在junit测试中停止cassandra嵌入式服务器 - how stop cassandra embedded server in junit tests 使用Cassandra Embedded时出现NoHostAvailableException - NoHostAvailableException when Cassandra Embedded is used JanusGraph 0.5.2 嵌入式 cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot - JanusGraph 0.5.2 embedded cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot 使用spark-cassandra-connector时出错:java.lang.NoSuchMethodError - Error in using spark-cassandra-connector: java.lang.NoSuchMethodError 在Android上使用RESTEasyClient时出现NoSuchMethodError - NoSuchMethodError when using RESTEasyClient on Android 使用球衣2.0时出现NoSuchMethodError - NoSuchMethodError when using jersey 2.0 使用gradle + ProGuard时出现NoSuchMethodError - NoSuchMethodError when using gradle + ProGuard 使用黄瓜时,Spring Boot在嵌入式Cassandra之前加载,如何解决此问题? - Spring Boot Loads Before Embedded Cassandra When Using Cucumber, How Can I Fix This? java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap 尝试使用 Chromedriver 和 Maven 执行测试时出错 - java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap error when trying to execute tests using Chromedriver and Maven 运行集成测试时嵌入 MongoDB - Embedded MongoDB when running integration tests
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM