【问题标题】:java.lang.VerifyError: Cannot inherit from final class with Firebase Adminjava.lang.VerifyError:无法从具有 Firebase 管理员的最终类继承
【发布时间】:2018-08-19 12:47:48
【问题描述】:

我正在尝试使用 Eclipse 创建一个 java 程序来处理我的 firebase 实时数据库中的一些事情。我的代码:

package server;

import java.io.FileInputStream;
import java.io.IOException;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;



public class Main {

    public static void main(String[] args) throws IOException {
        // Fetch the service account key JSON file contents
        FileInputStream serviceAccount = new FileInputStream("src/server/something.json");

        // Initialize the app with a service account, granting admin privileges
        FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).setDatabaseUrl("https://something.firebaseio.com").build();
        FirebaseApp.initializeApp(options);

        // As an admin, the app has access to read and write all data, regardless of Security Rules
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Status");
        ref.addListenerForSingleValueEvent(new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
            int status = dataSnapshot.getValue(Integer.class);
            System.out.println(status);
          }

          @Override
          public void onCancelled(DatabaseError error) { }
        });

    }

}

我的错误:

Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at com.google.api.client.googleapis.util.Utils.getDefaultTransport(Utils.java:51)
    at com.google.firebase.FirebaseOptions$Builder.<init>(FirebaseOptions.java:216)
    at server.Main.main(Main.java:24)

我在项目中的导入: firebase-admin-6.3.0.jar ; google-api-client-1.24.1.jar ; google-api-client-http-1.2.3-alpha.jar ; google-api-client-xml-1.2.3-alpha.jar ; google-auth-library-oauth2-http-0.10.0.jar ;谷歌-http-client-1.24.1.jar 。 还有一张全图:https://image.ibb.co/kqNMne/whole.png

【问题讨论】:

  • 该错误源于一条很长的线路。将其分解为更小的语句进行调试,以便获得更有意义的行号。

标签: java eclipse firebase firebase-authentication


【解决方案1】:

这看起来像是版本不匹配:这里的某些东西是针对一个不是 final 但现在是的类的版本编译的。将您在本地拥有的依赖项降级为 https://mvnrepository.com/artifact/com.google.firebase/firebase-admin/6.3.0 表中显示的版本,然后一次更新您在此处拥有的每个依赖项,直到您知道哪个是导致损坏的因素 - 并在匹配 Github 代表,以便他们可以正确解决此问题。

【讨论】:

猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多