【问题标题】:Get Firebase to work with java, not Android让 Firebase 使用 java,而不是 Android
【发布时间】:2014-10-01 10:37:57
【问题描述】:

我正在尝试启动并运行一个 libgdx 项目,并且我想使用 firebase 进行用户登录。我发现 SimleLogin 类依赖于 Android.jar。有没有办法解决这个问题,因为我想让桌面 java 应用程序和 android 一样运行。

这是导致问题的代码:

SimpleLogin authClient = new SimpleLogin(myRef);;

authClient.createUser("myuser@gmail.com", "much wow",
        new SimpleLoginAuthenticatedHandler() {

            @Override
            public void authenticated(FirebaseSimpleLoginError error,
                    FirebaseSimpleLoginUser user) {
                if (error != null) {
                    System.out.println(error);
                } else {
                    System.out.println(user);
                }

            }
        });

这在运行时抛出这个:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NoClassDefFoundError: android/net/Uri
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: java.lang.NoClassDefFoundError: android/net/Uri
    at com.firebase.simplelogin.SimpleLogin.makeRequest(SimpleLogin.java:634)
    at com.firebase.simplelogin.SimpleLogin.createUser(SimpleLogin.java:417)
    at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:63)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: java.lang.ClassNotFoundException: android.net.Uri
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    ... 5 more

我要这样做还是他们声称支持的 Java 平台真的只是 android?

【问题讨论】:

  • 我不确定它最近是否更改,但此页面 (firebase.com/docs/android) 仅显示 Android。所以我确实怀疑它在非 Android Java 平台上是否有效(未经修改)。对 Stack Overflow 问题的快速浏览似乎暗示非 Android Java 用户正在使用其 REST API 访问 Firebase。见stackoverflow.com/questions/22252636/…
  • Firebase Java SDK 支持 Android 和普通 Java,但 Firebase 简单登录库目前仅支持 Android。大多数人不在移动设备上运行时使用自定义登录。您能详细说明您要完成的工作吗?

标签: java libgdx firebase


【解决方案1】:

Firebase 的 Java 产品有两个部分,每个部分都有不同的依赖项:

Firebase Java client library - 使用它来访问 Firebase 实时数据库。

文档有点偏向于 Android,但它在 Java 和可以调用 Java 的语言(例如 Groovy)中运行良好

Firebase Simple Login library - 这使身份验证更容易,但如果您愿意,您可以自己处理身份验证。

此库仅适用于 Android。通常,身份验证通常以一堆特定于平台的技巧告终。该库专注于 Android 中的这些技巧。

听起来你想在 libgdx 中进行身份验证。您能否扩展您的问题以包含更多有关您预期的用例的信息?

(复制自上述@Ossama 的评论)

【讨论】:

  • 您能否更新您的答案并添加一个代码以使其在具有新 firebase.google.com 的 java(而不是 Android)上工作,因为有一些 google-services.json 文件
【解决方案2】:

Firebase 客户端有 2 种风格。一种用于 Android,另一种用于 JVM。不幸的是,默认情况下您只会获得 Android 版本。

您将从更改日志中找到 JVM 版本。

2015 年 9 月 24 日 - 版本 2.4.0 (Android) (JVM)

我认为使用 JVM jar 可以解决这个问题。

老款: 请使用以下 jar for Java SDK https://cdn.firebase.com/java/firebase-client-jvm-2.4.0.jar

我得到了上面的链接https://www.firebase.com/docs/android/changelog.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多