编程语言
首页 > 编程语言> > java-Spring Boot中的Firebase在初始化期间给出错误

java-Spring Boot中的Firebase在初始化期间给出错误

作者:互联网

我正在尝试在Spring Boot应用中设置Firebase.我正在遵循文档here中给出的代码片段.这就是我的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抛出以下错误:

[ERROR] RunLoop: Uncaught exception in Firebase Database runloop
(5.2.0). Please report to firebase-database-client@google.com
java.lang.NoSuchMethodError:
org.json.JSONStringer.object()Lorg/json/JSONWriter; at
com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:72)
at
com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:61)
at
com.google.firebase.database.util.JsonMapper.serializeJson(JsonMapper.java:41)

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

解决方法:

不知道您是否找到答案拉杰

我将通过排除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片段,因为我使用的是gradle而不是maven,但这应该是正确的.

我是怎么发现的

阅读您的问题和其他答案后,我开始研究“ org.json”包中JSONStringer类的潜在问题.所以我在想依赖org.json的依赖版本冲突

运行./gradlewdependencyInsight –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依赖项正在使用此软件包.我怀疑问题不是Google依赖关系中的版本冲突,因此我寻找了Spring与org.json pacakage可能存在的冲突.

在Google搜索“ Spring boot org.json”时,我发现Github issue与json库发生冲突.该问题提到,由于需要“ org.skyscreamer:jsonassert:1.4.0,请排除com.vaadin.external.google:android-json:0.0.20131108.vaadin1”,因此对于spring-boot-starter-test.

由此,我运行:`./gradlewdependencyInsight –dependency’com.vaadin.external.google’,它引用了’spring-boot-configuration-processor’.

标签:firebase-admin,java,firebase,spring-boot,firebase-realtime-database
来源: https://codeday.me/bug/20191013/1910612.html