GVKun编程网logo

java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sort(Ljava / util / Comparator;)异常

5

这篇文章主要围绕java.lang.NoSuchMethodError:排序arraylistandroid中没有接口方法sort和Ljava/util/Comparator;异常展开,旨在为您提供一

这篇文章主要围绕java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sortLjava / util / Comparator;异常展开,旨在为您提供一份详细的参考资料。我们将全面介绍java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sort的优缺点,解答Ljava / util / Comparator;异常的相关问题,同时也会为您带来Android studio java.lang.NoSuchMethodError: 没有静态方法 encodeBase64URLSafeString([B)Ljava/lang/String;、android – java.lang.NoSuchMethodError:没有虚方法setTokenProvider、android – java.lang.NoSuchMethodError:没有静态方法zzb、android – NoSuchMethodError:java.lang.Long.hashCode的实用方法。

本文目录一览:

java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sort(Ljava / util / Comparator;)异常

java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sort(Ljava / util / Comparator;)异常

我正在尝试ArrayList在Android应用程序中的Java中排序,但是却遇到了这个奇怪的异常。

码:

eventsList.sort(new Comparator<Event>() {        @Override        public int compare(Event event, Event t1) {            return event.getEventStartDate().compareTo(t1.getEventStartDate());        }    });

例外:

java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of ''java.util.List'' appears in /system/framework/core-libart.jar)

答案1

小编典典

ArrayList#sort()是在API级别24中添加的,而低于API级别24的运行时没有该方法。看起来您compileSdkVersion已经24
岁了,因此您首先获得了要编译的代码。

使用Collections.sort(list, comparator)代替。

Android studio java.lang.NoSuchMethodError: 没有静态方法 encodeBase64URLSafeString([B)Ljava/lang/String;

Android studio java.lang.NoSuchMethodError: 没有静态方法 encodeBase64URLSafeString([B)Ljava/lang/String;

如何解决Android studio java.lang.NoSuchMethodError: 没有静态方法 encodeBase64URLSafeString([B)Ljava/lang/String;?

我正在尝试使用 Upbit API 调用我的钱包信息。

示例代码来自https://docs.upbit.com/reference#%EC%9E%90%EC%82%B0-%EC%A1%B0%ED%9A%8C

这是我的代码。

(删除了我的 API 访问密钥和秘密密钥)


package gachon.mpclass.apitest2;

import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import java.util.UUID;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;


import android.util.Base64;
import org.apache.http.httpentity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;


import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NetworkThread thread = new NetworkThread();
        thread.start();
    }


    class NetworkThread extends Thread {

        public void run() {


            try {

                String accessKey = ("api key value");
                String secretKey = ("api key value");
                String serverUrl = ("https://api.upbit.com");


                Algorithm algorithm = Algorithm.HMAC256(secretKey);
                String jwtToken = JWT.create()
                        .withClaim("access_key",accessKey)
                        .withClaim("nonce",UUID.randomUUID().toString())
                        .sign(algorithm);

                String authenticationToken = "Bearer " + jwtToken;
                HttpClient client = HttpClientBuilder.create().build();
                HttpGet request = new HttpGet(serverUrl + "/v1/accounts");
                request.setHeader("Content-Type","application/json");
                request.addHeader("Authorization",authenticationToken);

                HttpResponse response = client.execute(request);
                httpentity entity = response.getEntity();


                System.out.println(EntityUtils.toString(entity,"UTF-8"));

            } catch (IOException e) {
                e.printstacktrace();
            }
        }

    }


}

SDK 版本为 30 和依赖项是

dependencies {

    implementation ''androidx.appcompat:appcompat:1.2.0''
    implementation ''com.google.android.material:material:1.3.0''
    implementation ''androidx.constraintlayout:constraintlayout:2.0.4''
    implementation filetree(dir: ''C:\\Users\\admin\\AndroidStudioProjects\\APITest2\\app\\libs'',include: [''*.aar'',''*.jar''],exclude: [])
    testImplementation ''junit:junit:4.+''
    androidTestImplementation ''androidx.test.ext:junit:1.1.2''
    androidTestImplementation ''androidx.test.espresso:espresso-core:3.3.0''
    compileOnly ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2''
    implementation group: ''org.apache.httpcomponents'',name: ''httpclient-android'',version: ''4.3.5''
    implementation ''com.fasterxml.jackson.core:jackson-databind:2.3.2''
    implementation group: ''commons-codec'',name: ''commons-codec'',version: ''1.10''
    implementation ''com.auth0.android:jwtdecode:2.0.0''
    api ''io.jsonwebtoken:jjwt-api:0.11.2''
    runtimeOnly ''io.jsonwebtoken:jjwt-impl:0.11.2''
    runtimeOnly(''io.jsonwebtoken:jjwt-orgjson:0.11.2'') { exclude group: ''org.json'',module: ''json''}
    runtimeOnly ''org.bouncycastle:bcprov-jdk15on:1.60''
    implementation ''com.android.support:multidex:1.0.3''

}

错误是

E/AndroidRuntime: FATAL EXCEPTION: Thread-2
    Process: gachon.mpclass.apitest2,PID: 21107
    java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of ''org.apache.commons.codec.binary.Base64'' appears in /system/framework/org.apache.http.legacy.jar)
        at com.auth0.jwt.JWTCreator.sign(JWTCreator.java:283)
        at com.auth0.jwt.JWTCreator.access$100(JWTCreator.java:23)
        at com.auth0.jwt.JWTCreator$Builder.sign(JWTCreator.java:264)
        at gachon.mpclass.apitest2.MainActivity$NetworkThread.run(MainActivity.java:48)

我尝试了很多库和依赖项,但仍然出现相同的错误。 我应该更改整个代码还是有任何工作依赖项?

解决方法

这个错误通常发生在类路径上的 jar 版本错误时,在这种情况下,可能是应用程序正在寻找后续 jar /system/framework/org.apache.http.legacy.jar 中的 Base64 类。看看这个提交 https://github.com/auth0/java-jwt/commit/7dea6ac54d5b5b8822a9f3ee41cc4666e250cc27#diff-66fdd511fc2a34e115ac3e635c97eb82b89c8b64e26ea09247712b9efa5e62f7

查看 auth0.jwt 项目,您可以看到在 JWTCreator.sign() 方法中调用 Base64.encodeBase64URLSafeString(byte []) 方法的位置,可能会抛出错误,因为类路径上的 Base64 类版本确实如此不包含该功能。 如果您发布整个 build.gradle 文件会很有帮助。

android – java.lang.NoSuchMethodError:没有虚方法setTokenProvider

android – java.lang.NoSuchMethodError:没有虚方法setTokenProvider

每当我将com.google.firebase:firebase-firestore:19.0.0添加到Gradle并运行应用程序时,都会出现以下错误.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: meter.meter, PID: 13588
    java.lang.NoSuchMethodError: No virtual method setTokenProvider(Lcom/google/firebase/internal/InternalTokenProvider;)V in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/meter.meter-Qosf8nECYGfI4HI93CwJrw==/split_lib_dependencies_apk.apk!classes2.dex)
        at com.google.firebase.auth.zzp.create(UnkNown Source:4)
        at com.google.firebase.components.ComponentRuntime.lambda$new$0(com.google.firebase:firebase-common@@17.0.0:66)
        at com.google.firebase.components.ComponentRuntime$$Lambda$1.get(UnkNown Source:4)
        at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-common@@17.0.0:53)
        at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-common@@17.0.0:155)
        at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@17.0.0:642)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:358)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:321)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.0.0:305)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@17.0.0:53)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@17.0.0:47)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6391)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

摇篮:

dependencies {
    implementation filetree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

    implementation 'com.firebaseui:firebase-ui-auth:4.3.1'


    implementation 'com.facebook.android:facebook-android-sdk:5.0.0'

    implementation 'com.twitter.sdk.android:twitter-core:3.3.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'

    implementation 'com.github.yalantis:ucrop:2.2.3-native'

    def camerax_version = "1.0.0-alpha01"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"

    implementation 'de.hdodenhof:circleimageview:3.0.0'
    implementation 'com.google.firebase:firebase-firestore:19.0.0'


}
apply plugin: 'com.google.gms.google-services'

解决方法:

由于您使用的是最新版本的firestore,因此需要将以下依赖项添加到build.gradle:

implementation 'com.google.firebase:firebase-auth:17.0.0'

根据docs:

Authentication version 17.0.0

This update of firebase-auth is required to use new versions of firebase-firestore, firebase-functions, firebase-storage, and firebase-database going forward.

此外,由于firebase-ui-auth使用firebase auth的16.0.5版本,然后添加您自己的firebase-auth实现,该实现将覆盖该版本.

所以你应该有以下依赖项:

dependencies {
 implementation filetree(dir: 'libs', include: ['*.jar'])
 implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
 implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
 testImplementation 'junit:junit:4.12'
 androidTestImplementation 'androidx.test:runner:1.1.0'
 androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

 implementation 'com.google.firebase:firebase-auth:17.0.0'
 implementation 'com.firebaseui:firebase-ui-auth:4.3.1'



 implementation 'com.facebook.android:facebook-android-sdk:5.0.0'

 implementation 'com.twitter.sdk.android:twitter-core:3.3.0'
 implementation 'androidx.recyclerview:recyclerview:1.0.0'

 implementation 'com.github.yalantis:ucrop:2.2.3-native'

 def camerax_version = "1.0.0-alpha01"
 implementation "androidx.camera:camera-core:${camerax_version}"
 implementation "androidx.camera:camera-camera2:${camerax_version}"

 implementation 'de.hdodenhof:circleimageview:3.0.0'
 implementation 'com.google.firebase:firebase-firestore:19.0.0'


}

android – java.lang.NoSuchMethodError:没有静态方法zzb

android – java.lang.NoSuchMethodError:没有静态方法zzb

每当我在手机上运行我的应用程序时,我都会收到错误消息:

FATAL EXCEPTION: main
E/AndroidRuntime(18680): java.lang.NoSuchMethodError: No static method zzb(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzaa; or its super classes (declaration of 'com.google.android.gms.common.internal.zzaa' appears in /data/app/***/base.apk)
E/AndroidRuntime(18680):    at com.google.firebase.provider.FirebaseInitProvider.zza(UnkNown Source)
E/AndroidRuntime(18680):    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(UnkNown Source)
E/AndroidRuntime(18680):    at android.app.ActivityThread.installProvider(ActivityThread.java:5159)
E/AndroidRuntime(18680):    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4754)
E/AndroidRuntime(18680):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4694)
E/AndroidRuntime(18680):    at android.app.ActivityThread.access$1600(ActivityThread.java:150)
E/AndroidRuntime(18680):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
E/AndroidRuntime(18680):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(18680):    at android.os.Looper.loop(Looper.java:148)
E/AndroidRuntime(18680):    at android.app.ActivityThread.main(ActivityThread.java:5423)
E/AndroidRuntime(18680):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(18680):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
E/AndroidRuntime(18680):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我在我的Unity项目中导入了Facebook SDK,Firebase,Adjust,Unity Purchasing和Smartfox.

我在上一个主题中提到了这个问题,我认为为问题打开新主题会更好.以下是我之前与此相关的主题,以便更好地理解:

Google.JarResolver.ResolutionException: Cannot resolve com.google.firebase:firebase-analytics-unity:1.0.0()

如果您需要更多信息,请告诉我.

解决方法:

尝试

1.在你的build.gradle中把这个:

defaultConfig {
    [...]
    multiDexEnabled true
}

2.使您的应用程序类扩展为MultiDexApplication

android – NoSuchMethodError:java.lang.Long.hashCode

android – NoSuchMethodError:java.lang.Long.hashCode

我在AbstractORM类的hashCode上有以下覆盖方法:
var _id = Random().nextLong()

override fun getId() = _id // AbstractORM class implements an interface that defines this method getId()

override fun hashCode() = getId().hashCode()

突然开始抛出以下异常:

FATAL EXCEPTION: main
java.lang.NoSuchMethodError: java.lang.Long.hashCode
   at com.company.ormlite.AbstractORM.hashCode(AbstractORM.kt:271)
   at java.util.HashMap.put(HashMap.java:390)
   at java.util.HashSet.add(HashSet.java:95)
   at kotlin.collections.ArraysKt___ArraysKt.toCollection(_Arrays.kt:6518)
   at kotlin.collections.ArraysKt___ArraysKt.toSet(_Arrays.kt:6853)
   at kotlin.collections.SetsKt__SetsKt.setof(Sets.kt:32)
   at com.company.android.tna.orm.DataManager.getTables(DataManager.kt:16)
   at com.company.android.tna.orm.DataManager.getTables(DataManager.kt:10)
   at com.company.android.core.utils.AbstractDataManager.create(AbstractDataManager.kt:25)
   at com.company.android.core.utils.AbstractDataManager.start(AbstractDataManager.kt:44)
   at com.company.android.core.utils.AbstractZKApplication.onCreate(AbstractZKApplication.kt:54)
   at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999)
   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151)
   at android.app.ActivityThread.access$1300(ActivityThread.java:130)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4745)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
   at dalvik.system.NativeStart.main(Native Method)

这让我傻眼了几个原因:

> Java和Kotlin中的所有类都有hashCode方法,因为它继承自Object或Any.
>如何找不到Android SDK本身的方法?如果SDK不存在,它是如何运行的?
>在IntelliJ IDEA中检查该行代码时,它会将我发送到kotlin.Any.hashCode,而不是java.lang.Long.hashcode.

任何见解都将非常感谢,提前感谢.

解决方法

检查编译后的AbstractORM类后,我发现了问题:较新的Kotlin版本为该行生成了不同的代码
getId().hashCode()

Kotlin 1.1.2生成以下代码:

Long.valueOf(this.getId()).hashCode()

而较新版本的Kotlin会生成其他代码:

Long.hashCode(this.getId())

问题是Android中的这个静态方法Long.hashCode(long)仅在API 24(Android 7.0)之后可用,而我正在测试具有版本4.1(API 16)的Android设备.

我正在通过手动计算哈希码来暂时修复,尽管我已经打开了一个问题here.

override fun hashCode() = (getId() xor getId().ushr(32)).toInt()

如issue所述,切换到Kotlin编译器的Java 1.6目标会生成旧的兼容代码.

PS:我不是100%肯定那些Kotlin版本,请带上一粒盐.

关于java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sortLjava / util / Comparator;异常的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android studio java.lang.NoSuchMethodError: 没有静态方法 encodeBase64URLSafeString([B)Ljava/lang/String;、android – java.lang.NoSuchMethodError:没有虚方法setTokenProvider、android – java.lang.NoSuchMethodError:没有静态方法zzb、android – NoSuchMethodError:java.lang.Long.hashCode等相关内容,可以在本站寻找。

本文标签: