Java 设备上的noclassdeffounderror

Java 设备上的noclassdeffounderror,java,android,devise,try-catch,Java,Android,Devise,Try Catch,我有相同的代码: public static void clearCacheWithoutMainActivity() { try { viewModelForClass.entrySet().removeIf(e -> !e.getKey().equals(className)); } catch(NoClassDefFoundError e) { int k = 0; } } private static

我有相同的代码:

public static void clearCacheWithoutMainActivity()
{
    try
    {
        viewModelForClass.entrySet().removeIf(e -> !e.getKey().equals(className));
    }
    catch(NoClassDefFoundError e)
    {
        int k = 0;
    }
}

private static Map<String, Pair<BaseObservable, Date>> viewModelForClass = new LinkedHashMap<>();

private static final String className = MainActivity.class.getName();

我的build.gradle文件。这可能是错误的?

如果您也可以共享错误日志,那会更有帮助

您是否编辑了清单文件以在标记中设置android:name,如下所示:

<application android:name="android.support.multidex.MultiDexApplication">


解决了这个问题。但仍然不明白为什么排除在外。没有lambdas的代码并不漂亮,但该怎么做。

java.lang.NoClassDefFoundError:ca.amikash.cashback.ViewModelProvider$$Lambda$1仅此错误。extend MultiDexApplication-没有帮助您使用具有类ca.amikash.cashback.ViewModelProvider的库项目?在类中,应用程序扩展MultiDexApplication我使用ViewModelProvider.clearCacheWithoutMainActivity();如果你还没有,你能尝试清理重建你的项目,然后再次运行应用程序吗?如果你正在使用retrolambda,这个问题可能与此有关。看看这个。许多人报告说,清洁建筑项目解决了类似问题。
<application android:name="android.support.multidex.MultiDexApplication">
for(Iterator<Map.Entry<String, Pair<BaseObservable, Date>>> it = viewModelForClass.entrySet().iterator(); it.hasNext(); ) {
            Map.Entry<String, Pair<BaseObservable, Date>> entry = it.next();
            if(!entry.getKey().equals(className)) {
                it.remove();
            }
        }
   viewModelForClass.entrySet().removeIf(e -> !e.getKey().equals(className));