Java NoSuchMethodError使用API连接到服务器

Java NoSuchMethodError使用API连接到服务器,java,android,Java,Android,我又回到了安卓系统。我已经很多年没有尝试过为Android做编程了。我有多年的java经验,但说到Android,我认为自己是新手。 我已经用Android Studio的模拟器启动并运行了一个简单的Android应用程序 当我尝试使用我们的内部API连接到服务器时,我得到了一个错误,而在Java应用程序中使用API时,我没有看到这个错误 2020-02-18 10:49:08.723 11033-11033/com.company.monitor E/AndroidRuntime: FATAL

我又回到了安卓系统。我已经很多年没有尝试过为Android做编程了。我有多年的java经验,但说到Android,我认为自己是新手。 我已经用Android Studio的模拟器启动并运行了一个简单的Android应用程序

当我尝试使用我们的内部API连接到服务器时,我得到了一个错误,而在Java应用程序中使用API时,我没有看到这个错误

2020-02-18 10:49:08.723 11033-11033/com.company.monitor E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.company.monitor, PID: 11033
    java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)
        at com.company.client.api.PingPongSender.setupExecutorThread(PingPongSender.java:68)
        at com.company.client.api.PingPongSender.<init>(PingPongSender.java:64)
        at com.company.client.api.ServiceContext.<init>(ServiceContext.java:34)
        at com.company.monitor.MainActivity.onCreate(MainActivity.java:35)
        at android.app.Activity.performCreate(Activity.java:7802)
运行Android Studio 3.5.3。仿真器“Nexus 5X API 29 x86”,Java 8

编辑:pastebin的乒乓球手

编辑:发现了一个类似的问题,这个问题的答案让我重新检查我的应用程序是否使用了Java8兼容性。我早该看到的。我使用了几个搜索短语,但可惜以前没有结果。

AFAIU似乎有两种类型的
newSingleThreadExecutor
,如下所述

  • publicstaticexecutorservice newSingleThreadExecutor()

  • 公共静态执行器服务newSingleThreadExecutor(ThreadFactory ThreadFactory)

  • 解决办法可能是改变你的想法

    executor = Executors.newSingleThreadExecutor("Executor");
    


    你能展示PingPongSender.java吗?我会试着看我是否能混淆一些东西并展示出来。我已经在pastebin中发布了这个PingPongSender,并且有一个月的可见性。混淆了一些东西,如名称和包名。对不起。这是我的代码示例中的一个错误。它应该是
    executor=Executors.newSingleThreadExecutor(新线程工厂(“executor”)我们正在使用一个自定义线程工厂,它为所有使用它的线程设置daemon=true。
    
    executor = Executors.newSingleThreadExecutor("Executor");
    
    executor = Executors.newSingleThreadExecutor();