log4j:ERROR A “org.apache.log4j.ConsoleAppender” object is not assignable to a “org.apache.log4j.Appender” variable

谁说胖子不能爱 提交于 2019-12-13 11:38:28

问题


I am making a web app using gradle. I used log4j in this app. When I build the project I am getting error...

  • log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
  • log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
  • log4j:ERROR [org.powermock.core.classloader.MockClassLoader@16a40b2] whereas object of type
  • log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [sun.misc.Launcher$AppClassLoader@5e3a78ad].
  • log4j:ERROR Could not instantiate appender named "stdout".

I still did not find a good answer. And I forgot to say, My project build correctly and show log massages correctly. It doesn't work only on test classes.


回答1:


Adding this annotation works for me.

@PowerMockIgnore("org.apache.log4j.*") 



回答2:


Your classpath contains 2 copies of log4j library. Exclude one and try again.




回答3:


There is a Clear answer here. :D

When we have a final method and slf4j loggers in our classes. We have to use powermock in our test class. Because of this we have to use @MockPolicy(Slf4jMockPolicy.class) with particuler imports at the test class which we used Powermock.



来源:https://stackoverflow.com/questions/21090735/log4jerror-a-org-apache-log4j-consoleappender-object-is-not-assignable-to-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!