【问题标题】:NoClassDefFound Error while calling Java singleton class in kotlin Class在 kotlin 类中调用 Java 单例类时出现 NoClassDefFound 错误
【发布时间】:2018-10-31 10:16:24
【问题描述】:

如何从 kotlin 类中的 Java 单例类中获取数据。?因为我的项目是一个旧项目并且整个应用程序都在 java 中,现在我正在 kotlin 中实现它的新模块,我在 kotlin 的服务类(UpdateWidgetService.kt) 中使用 Java 的 Singleton (CurrentUser.java)。而我正在使用这个 CurrentUser.getInstance().userType在我的服务类中获取用户类型的代码,其抛出异常

Process: com.example.myapp, PID: 27066
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/myapp/main/CurrentUser

Java

   public class CurrentUser {

          String userType = "";

     private static CurrentUser instance;

      public static CurrentUser getInstance() {
            if (instance == null) {
                instance = new CurrentUser();
            }
            return instance;
        }

        public void setUserType(String userType) {
            this.userType = userType;
        }

        public String getUserType() {
            return userType ;
        }



    }

科特林

CurrentUser.getInstance().userType

【问题讨论】:

    标签: java android kotlin singleton


    【解决方案1】:

    重建并无效缓存您的项目,然后重新启动您的 android studio。 也同步文件系统。 我遇到了同样的问题,我做了这个技巧,它对我有用。 希望这对您有所帮助。

    【讨论】:

      【解决方案2】:

      在 kotlin 中像这样获取 userType

       val userType=CurrentUser.getInstance().userType
      

      【讨论】:

      • 我在 kotlin 类中使用 CurrentUser.java 类时遇到 NoClassDefFoundError ......我如何能够获得价值用户类型。?如果找不到我的班级。?
      • 确保导入包是CurrentUser的正确路径
      • 然后使 android studio 缓存失效并重建项目
      • 我尝试了所有可能的解决方案(清理/重建/终止进程/等)但失败了。
      【解决方案3】:

      如果您使用 ProGuard 来缩小代码,您介意提供信息吗?

      如果是,请确保您在 proguard-rules.pro 文件中添加模型类

      exmp: -keep class packagename.models.* { *; }

      【讨论】:

      • 我没有使用 pro-guard。
      猜你喜欢
      • 1970-01-01
      • 2018-10-26
      • 2017-10-05
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多