gpt4 book ai didi

java - 使用 Gradle 导出 jar 时出现 Firestore 依赖项问题

转载 作者:行者123 更新时间:2023-12-02 05:42:14 28 4
gpt4 key购买 nike

我正在使用 Gradle 在 Eclipse 中构建一个应用程序。当我通过从 Eclipse 运行来测试应用程序时,一切都按其应有的方式工作 - 但是,当我尝试导出并运行 .jar 文件时,出现以下错误:

Failed for: .\ServiceAccountKey.json (The system cannot find the file specified)
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/firebase/cloud/FirestoreClient
at main.Main.getSuroviny(Main.java:105)
at main.Main.main(Main.java:39)
Caused by: java.lang.ClassNotFoundException: com.google.firebase.cloud.FirestoreClient
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

我的 build.gradle 文件如下所示:

apply plugin: 'java-library'
apply plugin: 'java'

// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
google()
}

dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'

// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:23.0'
implementation 'com.google.firebase:firebase-admin:5.8.0'
implementation 'com.google.gms:google-services:4.0.1'

implementation 'com.google.firebase:firebase-core:16.0.6'
//dependency for using firebase database
implementation 'com.google.firebase:firebase-database:16.0.6'
//dependency for email and password authentication
implementation 'com.google.firebase:firebase-auth:16.1.0'
//dependency for cloud storage
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.firebase:firebase-firestore:18.0.0'

// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}


// Include dependent libraries in archive.

jar {
manifest {
attributes "Main-Class": "main.Main"
}

from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}

我已经仔细检查了所有导入和实现,根据我在 Firestore 文档中找到的信息,一切似乎都是正确的。

另外,我已经尝试过一些事情,错误在它找到的第一个 firstore 方法上发生了变化 - 无论是 DocumentReference、FirestoreClient 还是其他任何方法。

感谢任何提前提出建议的人。

最佳答案

最后,错误是我的错误 - 我的 .jar 不包含加载 Firestore 实例所需的服务 key (出于某种原因,我希望 Eclipse 在导出可运行的 jar 文件时包含它,因为我有选中“在包中包含资源文件”选项。

因此,我将服务 key JSON 文件包含在 .jar 文件所在的同一文件夹中,这样我就可以根据文件的位置读取它。

这并不是一个优雅的解决方法,但就目前而言,这就足够了。

关于java - 使用 Gradle 导出 jar 时出现 Firestore 依赖项问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com