
# 运行Spark作业报java.lang.AbstractMethodError
Spark 2.3对内部接口Logging做了行为变更，如果用户代码里直接继承了该Logging，且编译时使用的是低版本的Spark，那么应用程序在Spark 2.3的环境中运行将会报java.lang.AbstractMethodError。
解决措施有如下两种方案：
- 基于Spark 2.3重新编译应用
- 使用sl4j+log4j来实现日志功能，而不是直接继承Spark内部接口Logging。具体如下：
  ```
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.16</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.16</version>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
  private val logger = LoggerFactory.getLogger(this.getClass)
  logger.info("print log with sl4j+log4j")
  ```
  
 
