1

firebase로 빌드 할 때 데이터를 업로드하기 위해 gradle 스크립트를 만들려고합니다. 하지만 난 중포 기지 자바 관리 SDK에서 이상한 오류를 받고 있어요 : -Firebase 데이터베이스를 gradle로 사용하기

Caused by: java.lang.NoSuchMethodError: org.json.JSONObject.<init>(Ljava/lang/String;)V 
    at com.google.firebase.auth.FirebaseCredentials$CertCredential.<init>(FirebaseCredentials.java:273) 
    at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:156) 
    at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:130) 
    at com.google.firebase.auth.FirebaseCredentials$fromCertificate.call(Unknown Source) 
    at eu.long1.jwnotes.gradleplugins.UploadTask.action(UploadTask.groovy:31) 

작업이 다음과 같이 :

class UploadTask extends DefaultTask { 

    String message = "Huray!" 

    @TaskAction 
    def action() { 

     String a = "private-key" 

     FirebaseOptions options = new FirebaseOptions.Builder() 
       .setCredential(FirebaseCredentials.fromCertificate(new ByteArrayInputStream(a.getBytes("UTF-8")))) 
       .setDatabaseUrl("https://jwnotes.firebaseio.com/") 
       .build() 

     FirebaseApp.initializeApp(options) 


     FirebaseDatabase.getInstance().getReference().child("alfa-gradle").setValue(message) 
    } 
} 

제가 적용하기 위해 노력하고있어 오류를 받고 있어요 작업을 실행하십시오.

UPDATE

이 내 플러그인 Gradle을 파일입니다

plugins { 
    id 'groovy' 
    id 'maven' 
} 

group 'eu.long1.jwnotes.gradleplugins' 
version '1.0-SNAPSHOT' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile gradleApi() 
    compile localGroovy() 
} 

dependencies { 
    compile 'com.google.firebase:firebase-admin:5.3.1' 
    compile 'org.json:json:20160810' 

} 

sourceCompatibility = 1.8 

jar { 
    into('lib') { 
     from 'lib' 
    } 
} 

답변

2

런타임 환경이 중포 기지 SDK와 호환되지 않습니다 org.json:json 라이브러리의 다른 버전을 따기입니다. 올바른 버전의 json library을 사용하고 있는지 확인해야합니다. 이것은 일반적으로 종속성 트리를 검사하고 불필요한 종속성을 명시 적으로 제외해야합니다.

업데이트

은 나를 위해 일한 태그 :

buildscript { 
    repositories { 
     maven { 
      mavenCentral() 
      url uri('repo') 
     } 
    } 
    dependencies { 
     classpath group: 'net.hkj', name: 'gradle-task', 
        version: '1.0-SNAPSHOT' 
    } 
    dependencies { 
     classpath 'com.google.firebase:firebase-admin:5.3.1' 
    } 
} 

task greeting(type: net.hkj.UploadTask) { 
} 

나는 REPO 디렉토리에 컴파일 작업을 포함하는 병이있다. 태스크 구현을 src/main/groovy/net/hkj/UploadTask.groovy 파일에 넣고 greeting 태스크를 호출하기 전에 출력을 repo 디렉토리로 컴파일했다.

+0

나는 그것에 대해 생각했지만 여전히 같은 오류가 발생합니다. 이벤트가 플러그인 항아리에 종속성을 구축하려고 시도했습니다. –

+0

글쎄,이 방법은 20160810 버전의 [definitely exist] (https://github.com/stleary/JSON-java/blob/20160810/JSONObject.java#L318)입니다. 따라서 Gradle에서이 문제가 발생하지 않습니다. 올바른 의존성. 'org.json : json'에 명시적인 의존성을 버리면 어떨까요? –

+0

나는 결국 REST API를 사용했다. –