Java Spring引导中的Firebase在初始化过程中出错

Java Spring引导中的Firebase在初始化过程中出错,java,firebase,spring-boot,firebase-realtime-database,firebase-admin,Java,Firebase,Spring Boot,Firebase Realtime Database,Firebase Admin,我正在尝试在Spring Boot应用程序中设置Firebase。我将遵循文档中给出的代码片段。以下是我的pom的外观: <dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>5.2.0</version> </dependency>

我正在尝试在Spring Boot应用程序中设置Firebase。我将遵循文档中给出的代码片段。以下是我的pom的外观:

<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>5.2.0</version>
</dependency>
启动时
FirebaseApp.initializeApp
抛出以下错误:

[错误]RunLoop:Firebase数据库RunLoop中出现未捕获异常 (5.2.0). 请向firebase数据库报告-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.SerializedJSonValue(JsonMapper.java:61) 在 com.google.firebase.database.util.JsonMapper.serializeJson(JsonMapper.java:41)


我试着加入
org.json
,但运气不好。

不确定你是否找到了答案

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

因此,只有谷歌依赖使用这个软件包。我怀疑这个问题不是google Dependences中的版本冲突,所以我寻找Spring可能与org.json包存在的冲突

谷歌搜索“springboot org.json”让我想到了一个关于与json库冲突的问题。该问题提到,对于spring启动测试,因为“org.skyshrayer: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'。

检查项目的依赖关系树(
mvn dependency:tree
),看看类路径中有哪些JSON库可用。项目中可能有一个开放的json库,它与Firebase所需的旧org.json库冲突。您是否设法修复了它?是的,您是对的。一旦其他库被排除在外,它就可以正常工作了
@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);

    }
<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>
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)