【问题标题】:Firebase in Spring boot gives error during initalizationSpring boot 中的 Firebase 在初始化期间出现错误
【发布时间】:2018-01-20 22:47:05
【问题描述】:

我正在尝试在 Spring Boot 应用程序中设置 Firebase。我正在遵循文档here 中给出的代码 sn-ps。这就是我的 pom 的样子:

<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>5.2.0</version>
</dependency>

我运行来初始化 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 数据库运行循环中未捕获的异常 (5.2.0)。请向 firebase-database-client@google.com 报告 java.lang.NoSuchMethodError: org.json.JSONStringer.object()Lorg/json/JSONWriter;在 com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:72) 在 com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:61) 在 com.google.firebase.database.util.JsonMapper.serializeJson(JsonMapper.java:41)

我尝试包含org.json,但没有成功。

【问题讨论】:

  • 检查项目的依赖树 (mvn dependency:tree) 并查看类路径中可用的 JSON 库。项目中可能有一个 open-json 库,它与 Firebase 所需的旧 org.json 库冲突。
  • 你解决了吗?

标签: java firebase spring-boot firebase-realtime-database firebase-admin


【解决方案1】:

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

我正要通过排除 Spring Boot 的配置处理器引入的依赖项来消除此错误,并且(尽管在排除第一个之后我不再看到此错误)也从 Spring Boot 启动器测试中排除(如果使用) :

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>1.5.8.RELEASE</version>
        <scope>compile</scope>
        <exclusions>
          <exclusion> 
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android.json</artifactId>
          </exclusion>
        </exclusions> 
      </dependency>
    ...
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <version>1.5.8.RELEASE</version>
        <scope>test</scope>
        <exclusions>
          <exclusion> 
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android.json</artifactId>
          </exclusion>
        </exclusions> 
      </dependency>
    ...
  </dependencies>
</project>

请注意:我没有测试过这个确切的 pom sn-p,因为我使用的是 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 依赖项在使用这个包。我怀疑这个问题不是谷歌依赖中的版本冲突,所以我查找了 Spring 可能与 org.json 包存在的冲突。

Google 搜索“Spring boot org.json”将我带到Github issue,关于与 json 库的冲突。该问题提到对于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'。

【讨论】:

  • 是的,你是对的。一旦排除其他库,它就可以正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2016-12-16
相关资源
最近更新 更多