【问题标题】:Class not found for java.time.LocalDateTime while deploying app on android phone [duplicate]在android手机上部署应用程序时找不到java.time.LocalDateTime的类[重复]
【发布时间】:2018-08-17 13:37:01
【问题描述】:

当我在我的 android 手机上部署我的 android 应用程序时遇到 ClassNotFoundException。

我在 Android 6.0.1 和 Android 7.1.1 的 Android 手机上试过

而当我在 (Nexus 5X API 26) 并运行 Android 8.0 的模拟器上部署相同的应用程序时,我不会遇到任何问题。应用加载顺畅。

Build.gradle(app)文件有

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "de.pfiva.mobile.voiceassistant"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

我已经包含了来自本地 maven 的依赖项。这种依赖基本上有普通的java类(POJO)。在某些类中有 java.time.LocalDateTime 类型的字段

我该如何解决这个问题。寻找建议。

谢谢。

例外:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: de.pfiva.mobile.voiceassistant, PID: 25245
                  java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDateTime;
                      at java.lang.Class.getDeclaredFields(Native Method)
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:150)
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                      at com.google.gson.Gson.getAdapter(Gson.java:423)
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                      at com.google.gson.Gson.getAdapter(Gson.java:423)
                      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53)
                      at com.google.gson.Gson.getAdapter(Gson.java:423)
                      at retrofit2.converter.gson.GsonConverterFactory.responseBodyConverter(GsonConverterFactory.java:64)
                      at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:330)
                      at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:313)
                      at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:739)
                      at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:172)
                      at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
                      at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
                      at java.lang.reflect.Proxy.invoke(Proxy.java:813)
                      at $Proxy0.getNLUData(Unknown Source)
                      at de.pfiva.mobile.voiceassistant.activities.MainActivity.onCreate(MainActivity.java:41)
                      at android.app.Activity.performCreate(Activity.java:6826)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1121)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2656)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2764)
                      at android.app.ActivityThread.-wrap12(ActivityThread.java)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6173)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "java.time.LocalDateTime" on path: DexPathList[[zip file "/data/app/de.pfiva.mobile.voiceassistant-1/base.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_dependencies_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_0_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_1_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_2_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_3_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_4_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_5_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_6_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_7_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_8_apk.apk", zip file "/data/app/de.pfiva.mobile.voiceassistant-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/de.pfiva.mobile.voiceassistant-1/lib/arm64, /system/lib64, /vendor/lib64]]
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                      at java.lang.Class.getDeclaredFields(Native Method) 
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:150) 
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100) 
                      at com.google.gson.Gson.getAdapter(Gson.java:423) 
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115) 
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164) 
                      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100) 
                      at com.google.gson.Gson.getAdapter(Gson.java:423) 
                      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) 
                      at com.google.gson.Gson.getAdapter(Gson.java:423) 
                      at retrofit2.converter.gson.GsonConverterFactory.responseBodyConverter(GsonConverterFactory.java:64) 
                      at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:330) 
                      at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:313) 
                      at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:739) 
                      at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:172) 
                      at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) 
                      at retrofit2.Retrofit$1.invoke(Retrofit.java:147) 
                      at java.lang.reflect.Proxy.invoke(Proxy.java:813) 
                      at $Proxy0.getNLUData(Unknown Source) 
                      at de.pfiva.mobile.voiceassistant.activities.MainActivity.onCreate(MainActivity.java:41) 
                      at android.app.Activity.performCreate(Activity.java:6826) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1121) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2656) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2764) 
                      at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6173) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

【问题讨论】:

  • 很遗憾,较早的 Android 版本没有LocalDateTime。你需要一个解决方法as described here

标签: java android java-time


【解决方案1】:

如上所述,here java.time 包在 API 26 (Android O) 及更高版本中可用。

【讨论】:

  • 正如 Markus Kauppinen 在评论中所说,java.time 可通过the ThreeTenABP library 用于较旧的 Android 版本。
  • 是吗?他正在询问他遇到的崩溃,这与他使用的 API 在该版本中不可用有关。我很清楚你的陈述,但我看不出评论我的答案的原因。 (如果您在清除说明时已经在评论中建议了解决方案,那么更多)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 2020-05-20
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多