问题异常处理收集

问题异常处理收集

1.java.lang.NoSuchMethodError

Process Name: 'com.test.demo'
Thread Name: 'main'
Back traces starts.
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
	at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
	at android.os.Handler.handleCallback(Handler.java:754)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:163)
	at android.app.ActivityThread.main(ActivityThread.java:6388)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)
Caused by: java.lang.NoSuchMethodError: No static method withInitial(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal; in class Ljava/lang/ThreadLocal; or its super classes (declaration of 'java.lang.ThreadLocal' appears in /system/framework/core-oj.jar)
	at com.test.demo.common.commonutils.TimeUtil.<clinit>(TimeUtil.java:128)
	at com.test.demo.common.commonutils.TimeUtil.getfriendlyTime(TimeUtil.java)
	at com.test.demo.common.commonutils.AdViewpagerUtil$3.onPageSelected(AdViewpagerUtil.java:625)
	at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1941)
	at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:665)

分析:

根据您提供的最新错误日志,问题是 java.lang.NoSuchMethodError,具体是找不到 ThreadLocal 类中的 withInitial 静态方法。这通常表示您正在使用的 Android 版本不支持该方法。

分析:

  • 方法未找到:NoSuchMethodError 表示在运行时找不到指定的方法。这可能是因为:
  • 您的代码或库使用了 Java 8 的特性,但当前的 Android 版本不支持这些特性。
  • withInitial 方法是在 Java 8 中引入的,而某些 Android 版本(特别是低于 Android 8.0)可能不支持。

2. 调用栈:从调用栈中可以看到,问题发生在 TimeUtil 类的静态初始化块中,可能是因为该类依赖于不兼容的 Java 8 特性。

处理建议:

  • 检查 Android 版本:
  • 确保您的应用程序的 minSdkVersion 设置为支持 Java 8 的版本(通常是 Android 8.0 及以上)。

2. 替代方案:

  • 如果您需要在较低版本的 Android 上运行,可以考虑使用其他方法来实现相同的功能,而不是使用 ThreadLocal.withInitial。例如,可以手动创建和管理 ThreadLocal 实例。

3. 使用 Java 7 兼容的代码:

  • 如果您必须支持较低版本的 Android,请避免使用 Java 8 的特性,或者使用第三方库来提供类似的功能。
  • 更新依赖:
  • 检查您使用的库是否有更新版本,可能已经解决了与 Java 8 兼容性相关的问题。

5. 清理和重建项目:

  • 尝试清理项目并重新构建,以确保所有类都被正确编译和打包。

通过以上步骤,您应该能够定位并解决问题。如果需要进一步的帮助,请提供更多的上下文或代码示例。

ThreadLocal.withInitial(Supplier<? extends T> supplier) 方法是在 Java 8 中引入的,因此在较低版本的 Android(特别是 Android 7.1 及以下)中不被支持。

解决方案:

如果您需要在较低版本的 Android 上使用 ThreadLocal,可以使用以下替代方法:

public static final ThreadLocal<SimpleDateFormat> sameDayFormat = new ThreadLocal<SimpleDateFormat>() {
    @Override
    protected SimpleDateFormat initialValue() {
        return new SimpleDateFormat("HH:mm");
    }
};

2.Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared

or use tools:overrideLibrary="xxx.xx.xxx" to force usage (may lead to

解决方案:

在uses-sdk节点加上 tools:overrideLibrary="xxx.xx.xxx"

如:

  <uses-sdk tools:overrideLibrary="com.umeng.umcrash"></uses-sdk>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值