我正在開發一個帶有Firebase的Android應用程序,並且我已決定使用Firebase Admin SDK創建一個簡單的管理應用程序。使用IDE(IntelliJ IDEA)啓動並通過Admin SDK連接到數據庫可以正常工作,但啓動導出的.jar文件時,Admin SDK無法連接到數據庫。要初始化到火力地堡的連接,我用下面(科特林)代碼:Firebase Admin SDK無法從jar文件內部連接到數據庫
//Initialize the Firebase Admin SDK.
val serviceAccount =
this.javaClass.classLoader.getResourceAsStream("fen/ftcConsole/control/flip-the-classroom-app-firebase-adminsdk.json")
val options = FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://flip-the-classroom-app.firebaseio.com/")
.setStorageBucket("flip-the-classroom-app.appspot.com")
.build()
FirebaseApp.initializeApp(options)
//Get the connections to the database and the cloud storage.
database = FirebaseDatabase.getInstance()
storage = StorageClient.getInstance().bucket()
我增加了一些控制檯輸出,並發現該代碼只是沒有得到過去的這行:「數據庫= FirebaseDatabase.getInstance ()」。它只是阻止線程而沒有任何反應。也沒有例外拋出。 正如我所說的,這隻發生在導出的jar文件中,從IDE開始時,一切正常,這使得測試非常困難。
使用IntelliJ和gradle創建.jar文件,打包.jar文件內的依賴關係,並將它們留在外面,從.jar文件或從.jar文件中使用admin-key加載.json文件。在外面,問題總是會發生。
創建具有gradle這個將.jar的的build.gradle文件包含以下jar塊:
jar {
manifest {
attributes 'Main-Class': 'fen.ftcConsole.gui.GUIStarterKt'
}
//adding project files/resources to the jar file
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
「gradle這個罐子」給我正確把裏面的所有的依賴和資源.jar文件文件。該應用程序還包含可正確啓動的JavaFX GUI。只有Firebase連接不起作用。當我使用應用程序插件而不是「gradle jar」時,會發生同樣的情況。
你究竟在做什麼導出這個罐子? –
我使用jar文件的build.gradle內容更新了問題。如前所述,除Admin Admin數據庫連接之外,一切正常。 –
您是否考慮過使用Gradle的應用程序插件來管理它? https://docs.gradle.org/current/userguide/application_plugin.html –