Sbt构建报错:Logentries Appender实例化失败求助
解决Scala项目中Logentries Appender的NoClassDefFoundError问题
从你给出的错误信息来看,核心问题是找不到org.apache.log4j.AppenderSkeleton类——这个类是Log4j 1.x的核心类,而你的项目依赖里只引入了Logback(logback-classic),却用了基于Log4j的Logentries Appender,导致依赖缺失。
下面给你两种可行的解决方案,根据你的项目日志架构选择:
方案一:补充Log4j依赖(继续使用Log4j版Appender)
如果你的项目确实需要保留Log4j相关的日志配置,直接在libraryDependencies中添加Log4j核心依赖即可:
libraryDependencies ++= Seq( // ... 其他已有的依赖 ... "log4j" % "log4j" % "1.2.17", // 添加这一行 "com.logentries" % "logentries-appender" % "1.1.38" )
另外,为了避免Log4j和Logback的日志冲突,建议再添加log4j-over-slf4j,把Log4j的日志请求桥接到SLF4J(也就是你的Logback实现):
"org.slf4j" % "log4j-over-slf4j" % "1.7.25"
方案二:切换到Logback版Logentries Appender(更推荐)
既然你的项目已经引入了logback-classic(SLF4J的日志实现),更合理的做法是使用Logentries官方提供的Logback专属Appender,这样可以避免Log4j和Logback的依赖冲突:
- 移除原有的Log4j版依赖:
// 删掉这一行 "com.logentries" % "logentries-appender" % "1.1.38"
- 添加Logback版的Logentries依赖:
libraryDependencies ++= Seq( // ... 其他已有的依赖 ... "com.logentries" % "logentries-logback" % "1.1.6" // 可根据需要升级到最新兼容版本 )
- 修改你的Logback配置文件(比如
logback.xml),替换Appender的类路径为Logback专属的:
<appender name="LE" class="com.logentries.logback.LogentriesAppender"> <!-- 你的Logentries配置参数,比如token等 --> <token>YOUR_LOGENTRIES_TOKEN</token> <logHost>data.logentries.com</logHost> <logPort>80</logPort> <useSsl>false</useSsl> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender>
最后,执行sbt clean compile重新构建项目,应该就能解决这个类找不到的问题了。
内容的提问来源于stack exchange,提问作者Faber
相关产品推荐
相关产品推荐

