2017-05-08 93 views
-1

我有一个mvn火花项目与以下依赖性罐子(只显示相关的罐子)。log4j与sl4j mvn依赖关系错误

mvn dependency:tree |grep slf4j 
[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.2:compile 
[INFO] +- org.slf4j:slf4j-api:jar:1.7.2:compile 
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.2:runtime 
[INFO] \- org.slf4j:jul-to-slf4j:jar:1.7.2:runtime 

,当我使用此代码

SparkSession spark = SparkSession 
       .builder() 
       .appName("Test spark model file") 
       .master("local") 
       .getOrCreate(); 

运行此MVN项目中,我得到以下错误

Exception in thread "main" java.lang.StackOverflowError 
    at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) 
    at org.slf4j.impl.JDK14LoggerFactory.getLogger(JDK14LoggerFactory.java:59) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:204) 
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:289) 
    at java.util.logging.Logger.log(Logger.java:738) 
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:579) 
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:651) 
    at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:224) 
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:299) 
    at java.util.logging.Logger.log(Logger.java:738) 
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:579) 
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:651)... 

我看到这个Using log4j2 with slf4j 涉及到我的错误,但似乎没有帮助

+0

你能提供你的pom的内容吗?另外,您采取了哪些与其他帖子相关的操作?这两个错误似乎确实相关。 –

回答

1

通过堆栈,你可以看到有一个cir slf4j/jdk14logger桥梁的仿真。

JDK14LoggerAdapter将slf4j记录器桥接到jdk14logger,然后SLF4JBridgeHandler做相反的操作。所以它会导致一个循环,然后会导致stackoverflow错误。

你可以通过移除这两个罐子之一来解决它。