java - 测试方法失败并出现日志错误

标签 java mongodb log4j morphia

我写了一个测试方法。在这个项目中,我使用 Morphia for MongoDB。但是当我启动该方法时,出现以下错误:

java.lang.NoSuchMethodError: org.apache.log4j.Logger.log(Ljava/lang/String;Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:166)
at com.mongodb.diagnostics.logging.SLF4JLogger.info(SLF4JLogger.java:71)
at com.mongodb.connection.SingleServerCluster.<init>(SingleServerCluster.java:45)
at com.mongodb.connection.DefaultClusterFactory.create(DefaultClusterFactory.java:85)
at com.mongodb.Mongo.createCluster(Mongo.java:670)
at com.mongodb.Mongo.createCluster(Mongo.java:656)
at com.mongodb.Mongo.<init>(Mongo.java:278)
at com.mongodb.Mongo.<init>(Mongo.java:274)
at com.mongodb.MongoClient.<init>(MongoClient.java:174)
at com.mongodb.MongoClient.<init>(MongoClient.java:151)
at com.mongodb.MongoClient.<init>(MongoClient.java:141)
at de.meinTellerchen.utils.mongoDB.connection.MongoDBCon.<init>(MongoDBCon.java:65)
at de.meinTellerchen.ingredient.service.IngredientRestService.dataBaseConnection(IngredientRestService.java:34)
at de.meinTellerchen.ingredient.service.IngredientRestService.<init>(IngredientRestService.java:22)
at de.meinTellerchen.ingredient.service.IngredientRestServiceTest.test001_WriteIngredient(IngredientRestServiceTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

此测试中的方法创建一个对象并将其保存在 Morphia 的 MongoDB 中。

    @Test
public void test001_WriteIngredient() {
    Ingredient ingredient = generateIngredient();
    IngredientRestService ingredientRestService = new IngredientRestService();
    assertNotNull(ingredient);
    Response response = ingredientRestService.writeIngredient(ingredient);
    assertNotNull(response);

}

我不知道为什么它不起作用。我不使用记录器。

最佳答案

问题出在 log4j 和 slf4j 的版本上。
在您的类路径中添加下面提到的 jar : log4j
slf4j-简单
jcl-over-slf4j
slf4j-api
slf4j-log4j12 具有适当的版本
或者使用 Maven 来处理您的依赖项。

jar 的兼容版本示例:
1)log4j-1.2.15.jar
2) slf4j-api-1.7.7.jar
3)commons-logging-1.0.4.jar
4) logback-classic-1.0.0.jar
5)logback-core-1.0.0.jar

关于java - 测试方法失败并出现日志错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133715/

相关文章:

mongodb - Mongoose 版本控制 : when is it safe to disable it?

javascript - 通过更好的排序加速 MongoDB find()? (使用 Mongoose orm)

maven - 找不到记录器的附加程序(org.springframework.web.context.ContextLoader)

java - 运行 Maven 构建 jar 文件时无法找到记录器类

java - java:Elasticsearch中不区分大小写的搜索

java - 如何在 Eclipse 中调用 Java ‘partly compile’?

java - 有没有办法在 Eclipse 的包/项目资源管理器中重新排序项目?

java - 设置 Apache POI 时遇到问题

mongodb - Docker中的Symfony应用程序不起作用

java - JDK 记录器与 Log4j