Open md-rifatkhan opened 1 year ago
java.lang.NoSuchMethodError: No virtual method getAnnotatedSuperclass()Ljava/lang/reflect/AnnotatedType; in class Ljava/lang/Class; or its super classes (declaration of 'java.lang.Class' appears in /apex/com.android.art/javalib/core-oj.jar)
have you solved it?
This is because Class in ART doesn't have the methods required by MapBinder (Guice extension). In standard Java RT the methods are in place. I have managed it to work in Android, need to do several things:
Add Cling repository to the project Gradle repositories (allprojects):
maven {
url 'http://4thline.org/m2'
allowInsecureProtocol = true
}
Create module's Gradle dependencies as follows - comment UPnP library, exclude original Guice, add Roboguice:
implementation 'org.roboguice:roboguice:4.0.0'
compileOnly 'org.roboguice:roboblender:4.0.0'
implementation ('com.google.inject.extensions:guice-multibindings:4.0') {
exclude module: 'guice'
}
implementation 'org.fourthline.cling:cling-core:2.1.2';
implementation 'org.fourthline.cling:cling-support:2.1.2';
implementation ('com.github.atomashpolskiy:bt-core:1.10') {exclude group: 'com.google.inject', module: 'guice'}
implementation ('com.github.atomashpolskiy:bt-http-tracker-client:1.10') {exclude group: 'com.google.inject', module: 'guice'}
implementation ('com.github.atomashpolskiy:bt-dht:1.10') {exclude group: 'com.google.inject', module: 'guice'}
implementation ('com.github.atomashpolskiy:bt-bencoding:1.10') {exclude group: 'com.google.inject', module: 'guice'}
// implementation ('com.github.atomashpolskiy:bt-upnp:1.10') {exclude group: 'com.google.inject', module: 'guice'}
Download the source code of BT-UPnP, copy "bt" folder and all its contents to the module's src/main
Modify "JettyAsyncUpnpServiceConfiguration.java" to make the class declaration like this:
public class JettyAsyncUpnpServiceConfiguration extends AndroidUpnpServiceConfiguration
Basically that's all, should start working. But I have another problem now, only 2 peers are connected and only 3 pieces are downloaded while the same code works fine in desktop Java.
java.lang.NoSuchMethodError: No virtual method getAnnotatedSuperclass()Ljava/lang/reflect/AnnotatedType; in class Ljava/lang/Class; or its super classes (declaration of 'java.lang.Class' appears in /apex/com.android.art/javalib/core-oj.jar)