Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误java.lang.NoClassDefFoundError:com.github.difflib.text.DiffRowGenerator$$Lambda$0_Java_Android_Gradle - Fatal编程技术网

错误java.lang.NoClassDefFoundError:com.github.difflib.text.DiffRowGenerator$$Lambda$0

错误java.lang.NoClassDefFoundError:com.github.difflib.text.DiffRowGenerator$$Lambda$0,java,android,gradle,Java,Android,Gradle,在我使用的Android项目中 我通过以下方式将其添加到dependency中: implementation group: 'com.github.wumpz', name: 'diffutils', version: '2.2' 还尝试将其更改为: implementation 'io.github.java-diff-utils:java-diff-utils:4.0-SNAPSHOT' 我有两个测试设备:一个是安卓6.0.1版的平板电脑,一个是安卓8.1.0版的手机 当我在电话上运行

在我使用的Android项目中

我通过以下方式将其添加到dependency中:

implementation group: 'com.github.wumpz', name: 'diffutils', version: '2.2'
还尝试将其更改为:

implementation 'io.github.java-diff-utils:java-diff-utils:4.0-SNAPSHOT'
我有两个测试设备:一个是安卓6.0.1版的平板电脑,一个是安卓8.1.0版的手机

当我在电话上运行这个项目时,一切都很顺利。但在平板电脑上,一旦java diff-utils代码出现错误,应用程序就会崩溃

    java.lang.NoClassDefFoundError: com.github.difflib.text.DiffRowGenerator$$Lambda$0
    at com.github.difflib.text.DiffRowGenerator.<clinit>(DiffRowGenerator.java:52)
    at com.github.difflib.text.DiffRowGenerator.create(DiffRowGenerator.java:210)
    at Fragments.ProfileFragment.onCreateView(ProfileFragment.java:38)
    at android.app.Fragment.performCreateView(Fragment.java:2220)
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
    at android.app.BackStackRecord.run(BackStackRecord.java:793)
    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5461)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

为什么会发生这种情况,我有什么办法可以解决吗?

在您使用的库的
DiffRowGenerator.java:52
中使用了
java.util.function.BiPredicate
(这就是stacktrace导致崩溃的地方)。链接到整个软件包
java.util.function.*
只能从API 24(Android 7.0)开始使用。这就是为什么它在安卓8上工作而不在安卓6上工作。有关java 8与android兼容性的更多信息,请参阅官方文档:

如果必须使用该库,您可以选择:

  • 不支持低于7.0的Android
  • 使用较旧的库版本。正如我所见,该库从2.0版开始使用Java8特性。因此,您可以尝试该库的1.2版
  • 分叉库并重写所有使用不支持的Java8功能的地方

谢谢。但当我瞄准除2.2之外的所有目标时,我得到了“无法解决”的错误。这很容易解释。根据mvnrepository,只发布了2.2和3.0版本。您可以通过克隆存储库并在所需版本下自己构建库来添加依赖项。这很遗憾。谢谢您的帮助。您可以联系github的库作者,请他发布其他版本。@Alex Hi。我是这个库的维护者/作者。您需要哪个版本?顺便说一句,它有一个新的家和组织:。
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "someid"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}