这篇文章主要围绕java.lang.NoSuchMethodError:排序arraylistandroid中没有接口方法sort和Ljava/util/Comparator;异常展开,旨在为您提供一
这篇文章主要围绕java.lang.NoSuchMethodError:排序arraylist android中没有接口方法sort和Ljava / 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;)异常
- 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;)异常
我正在尝试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;?
我正在尝试使用 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
每当我将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
, andfirebase-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
每当我在手机上运行我的应用程序时,我都会收到错误消息:
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
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.
任何见解都将非常感谢,提前感谢.
解决方法
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中没有接口方法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等相关内容,可以在本站寻找。
本文标签: