Spring启动时的Firebase在初始化期间出错

我正在尝试在Spring Boot应用程序中设置Firebase。 我正在按照文档中给出的代码片段进行操作。 这就是我的pom看起来的样子:

 com.google.firebase firebase-admin 5.2.0  

我用来初始化firebase的代码:

 @PostConstruct public void init() { InputStream serviceAccount = FirebaseConfig.class.getClassLoader().getResourceAsStream(configPath); FirebaseOptions options = null; try { options = new FirebaseOptions.Builder() .setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl(databaseUrl) .build(); } catch (IOException e) { e.printStackTrace(); } FirebaseApp.initializeApp(options); } 

在启动时, FirebaseApp.initializeApp会抛出以下错误:

[错误] RunLoop:Firebase数据库runloop(5.2.0)中未捕获的exception。 请向firebase-database-client@google.com报告java.lang.NoSuchMethodError:org.json.JSONStringer.object()Lorg / json / JSONWriter; com.google.firebase下面的com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:72)com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:61) .util.JsonMapper.serializeJson(JsonMapper.java:41)

我试图包括org.json但没有运气。

不确定你是否找到了答案Raj

我打算通过排除Spring Boot的配置处理器引入的依赖关系来解决这个错误(虽然我在排除第一个之后没有再看到这个错误)也从Spring引导启动程序测试中排除(如果使用的话):

  ...   org.springframework.boot spring-boot-configuration-processor 1.5.8.RELEASE compile   com.vaadin.external.google android.json    ...  org.springframework.boot spring-boot-starter-test 1.5.8.RELEASE test   com.vaadin.external.google android.json    ...   

请注意:我没有测试过这个精确的pom片段,因为我使用的是gradle而不是maven,但这应该是正确的。

我怎么发现这个

阅读你的问题和其他答案,我开始在包’org.json’中查找类JSONStringer的潜在问题。 所以我在想依赖于’org.json’的依赖的版本冲突

运行./gradlew dependencyInsight --dependency org.json ,我收到:

 org.json:json:20160810 -> 20140107 +--- com.google.cloud:google-cloud-core:1.7.0 | +--- com.google.cloud:google-cloud-storage:1.7.0 | | \--- com.google.firebase:firebase-admin:5.5.0 | | \--- compile | +--- com.google.cloud:google-cloud-firestore:0.25.0-beta | | \--- com.google.firebase:firebase-admin:5.5.0 (*) | +--- com.google.cloud:google-cloud-core-http:1.7.0 | | +--- com.google.cloud:google-cloud-storage:1.7.0 (*) | | \--- com.google.cloud:google-cloud-firestore:0.25.0-beta (*) | \--- com.google.cloud:google-cloud-core-grpc:1.7.0 | \--- com.google.cloud:google-cloud-firestore:0.25.0-beta (*) \--- com.google.firebase:firebase-admin:5.5.0 (*) (*) - dependencies omitted (listed previously) 

所以只有谷歌依赖者使用这个包。 我怀疑这个问题不是google dependecies中的版本冲突,所以我查找了Spring可能与org.json pacakage发生的冲突。

谷歌搜索’Spring boot org.json’让我得到一个关于与json库冲突的Github问题 。 该问题提到对于spring-boot-starter-test,因为“org.skyscreamer:jsonassert:1.4.0是必需的,不包括com.vaadin.external.google:android-json:0.0.20131108.vaadin1。”

从那以后,我跑了:`./gradlew dependencyInsight –dependency’com.vaadin.external.google’引用了’spring-boot-configuration-processor’。