【问题标题】:Spring boot spark application春季启动火花应用
【发布时间】:2018-11-15 09:36:36
【问题描述】:

我正在使用 Spring Boot 来实现 spark 应用程序。我构建了一个 uber jar,并使用 spark-submit 来执行应用程序。但我得到了以下异常:

18/06/05 15:32:37 错误 SpringApplication:应用程序运行失败 org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“gsonBuilder”的bean时出错 [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [com.google.gson.GsonBuilder]:工厂方法 'gsonBuilder' 抛出异常;嵌套异常是 java.lang.BootstrapMethod

错误:java.lang.NoSuchMethodError:com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder; 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103) .....

即使我在pom.xml 中添加了以下依赖项,异常仍然存在:

<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.8.5</version>
   <scope>compile</scope>           
</dependency>

如何解决这个依赖问题?

【问题讨论】:

  • 检查您的 mvn 依赖关系:树以验证您没有获得多个 gson 库。
  • 你打电话给setLenient吗?如果是这样,您可能想要检查构建中实际使用的版本,spring-boot 的依赖管理有时会覆盖依赖版本,并且可能会放置一个还没有/不再具有此方法的版本。如果您不调用该方法,它可能是引导的自动配置代码,在这种情况下,您可能很幸运没有输入&lt;version&gt;,因此引导获得了它想要的版本。旁注,boot 到处都使用jackson,也许你也可以用它来代替gson
  • 我检查了安装的 spark jar 文件夹,发现一个 gson-2.2.4.jar 没有 setLenient 方法。尽管我构建了一个 uber jar,但似乎这个 jar 文件用于运行应用程序。

标签: java spring apache-spark spring-boot


【解决方案1】:

也许您可以使用@SpringBootApplication(exclude = {GsonAutoConfiguration.class}) 来禁用 gson 自动配置。

【讨论】:

  • 这解决了我的问题!我检查了我的项目依赖关系树,发现只有org.apache.hadoop:hadoop-common:2.6.5 需要Gson,它是Spark 而不是Spring 的依赖关系。所以我一直在寻找避免Spring 搞砸的东西!
猜你喜欢
  • 1970-01-01
  • 2017-06-19
  • 2018-06-15
  • 2018-05-20
  • 1970-01-01
  • 2017-09-11
  • 2015-04-18
  • 2017-06-24
  • 2015-08-22
相关资源
最近更新 更多