Java: 无法访问com.google.auth.Credentials类文件,因为找不到com.google.auth.Credentials的类文件。

7
我正在使用Firebase Admin SDK,运行时出现以下错误:
Error:(22, 36) java: cannot access com.google.auth.Credentials
class file for com.google.auth.Credentials not found

这是抛出错误的构造函数。
import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.database.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

class Database{

private FirebaseDatabase firebaseDatabase;

Database(){

    InputStream serviceAccount = Database.class.getResourceAsStream("reading-incentive-firebase-adminsdk-n556s-1b742e4b58.json");

    FirebaseOptions options;
    try {
        options = new FirebaseOptions.Builder()
                .setCredentials( GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl("https://reading-incentive.firebaseio.com")
                .build();
        FirebaseApp.initializeApp(options);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("Error loading database");
    }

    firebaseDatabase = FirebaseDatabase.getInstance();

}

}

这是第22行

.setCredentials(GoogleCredentials.fromStream(serviceAccount))

我正在使用IntelliJ和gradle中的java sdk 1.8。我已经阅读了其他帖子并了解到使用sdk 1.8而不是1.7会抛出错误,但是我找不到解决方案。这是我的build.gradle文件...

group 'src'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation 'com.google.firebase:firebase-admin:6.5.0'
}

感谢任何帮助。

嗨,安德鲁,你运行这个的环境是什么?是Google应用引擎吗? - Sankha Karunasekara
我没有使用Google应用引擎,而是在Windows上使用JavaFX构建桌面应用程序。 - Andrew Heschl
我发布了一个答案,请告诉我它是否有效。 - Sankha Karunasekara
1个回答

3

我曾经在尝试将 Firebase 集成到我们的应用引擎项目中时遇到了同样的问题。这是由于你的应用程序内部存在某种瞬态依赖关系所致,其中包括 Google 库。

请尝试以下方法:

如果您使用的是较低版本的 appengine-api,请将其升级至 appengine-api-1.0-sdk-1.9.64.jar 或更高版本。

然后检查您的依赖项。如果您使用其中之一,请执行以下操作:

google-oauth-client-1.22.0.jar
google-oauth-client-appengine-1.22.0.jar
google-oauth-client-servlet-1.22.0.jar

可能是发生了冲突。尝试移除它们(也许不需要它们)。希望对你有所帮助。

抱歉回复晚了,我的应用程序中没有这些依赖项。我注意到 'google-oauth-client-1.25.0' 在外部库文件夹中,但在我的本地源代码或 gradle 文件中都找不到它。 - Andrew Heschl
把它删除,只要你可以通过你的项目引用它就行了。它可能会导致冲突。 - Sankha Karunasekara
太棒了。很高兴我能帮忙! - Sankha Karunasekara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接