Skip to content

AbstractMethodError at MastodonClient.build() #524

@McPringle

Description

@McPringle

My project apus was working fine for about a year but since today it broke with the following exception when it calls new MastodonClient.Builder("mastodon.social").build():

java.lang.AbstractMethodError: Receiver class social.bigbone.nodeinfo.entity.Server$$serializer does not define or inherit an implementation of the resolved method 'abstract kotlinx.serialization.KSerializer[] typeParametersSerializers()' of interface kotlinx.serialization.internal.GeneratedSerializer.
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$typeParameterDescriptors$2.invoke(PluginGeneratedSerialDescriptor.kt:40)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$typeParameterDescriptors$2.invoke(PluginGeneratedSerialDescriptor.kt:39)
	at kotlin.SafePublicationLazyImpl.getValue(LazyJVM.kt:107)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.getTypeParameterDescriptors$kotlinx_serialization_core(PluginGeneratedSerialDescriptor.kt:39)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$_hashCode$2.invoke(PluginGeneratedSerialDescriptor.kt:44)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$_hashCode$2.invoke(PluginGeneratedSerialDescriptor.kt:44)
	at kotlin.SafePublicationLazyImpl.getValue(LazyJVM.kt:107)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.get_hashCode(PluginGeneratedSerialDescriptor.kt:44)
	at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.hashCode(PluginGeneratedSerialDescriptor.kt:97)
	at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:937)
	at kotlinx.serialization.json.internal.DescriptorSchemaCache.get(SchemaCache.kt:37)
	at kotlinx.serialization.json.internal.DescriptorSchemaCache.getOrPut(SchemaCache.kt:29)
	at kotlinx.serialization.json.internal.JsonNamesMapKt.deserializationNamesMap(JsonNamesMap.kt:54)
	at kotlinx.serialization.json.internal.JsonNamesMapKt.getJsonNameIndexSlowPath(JsonNamesMap.kt:73)
	at kotlinx.serialization.json.internal.JsonNamesMapKt.getJsonNameIndex(JsonNamesMap.kt:97)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeObjectIndex(StreamingJsonDecoder.kt:229)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeElementIndex(StreamingJsonDecoder.kt:178)
	at social.bigbone.nodeinfo.entity.Server$$serializer.deserialize(Server.kt:11)
	at social.bigbone.nodeinfo.entity.Server$$serializer.deserialize(Server.kt:11)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:69)
	at kotlinx.serialization.internal.NullableSerializer.deserialize(NullableSerializer.kt:30)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:69)
	at kotlinx.serialization.json.Json.decodeFromString(Json.kt:107)
	at social.bigbone.nodeinfo.NodeInfoClient.retrieveServerInfo(NodeInfoClient.kt:90)
	at social.bigbone.MastodonClient$Builder.getInstanceVersion(MastodonClient.kt:971)
	at social.bigbone.MastodonClient$Builder.build(MastodonClient.kt:1038)
	at swiss.fihlon.apus.MastodonTest.showPosts(MastodonTest.java:17)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1460)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2036)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:189)

How to reproduce:

  1. git clone https://github.com/McPringle/apus.git
  2. cd apus
  3. git checkout 332f323f339a5c2125657a78c6b0244d39f8af0a
  4. ./mvnw test -Dtest=swiss.fihlon.apus.MastodonTest

I wrote the test MastodonTest just to reproduce this error with as less code as possible. This is how the test class looks like:

public class MastodonTest {

    @Test
    void showPosts() throws BigBoneRequestException {
        final MastodonClient client = new MastodonClient.Builder("mastodon.social").build(); // AbstractMethodError
        final Range range = new Range(null, null, null, 10);
        final List<Status> posts = client.timelines().getTagTimeline("java", LOCAL_AND_REMOTE, range).execute().getPart();
        System.out.println(posts);
    }

}

Here are the two relevant snippets from the pom.xml:

        <!-- Enable snapshots to use BigBone Mastodon client API -->
        <repository>
            <id>maven-central-snapshots</id>
            <name>Maven Central Snapshot Repository</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <dependency>
            <groupId>social.bigbone</groupId>
            <artifactId>bigbone</artifactId>
            <version>2.0.0-SNAPSHOT</version>
        </dependency>

This project requires Java 21 or newer.

Fun fact: Two days ago it was working fine and I have no idea why this error shows up... 😜

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions