Skip to content

[java] java.lang.LinkageError: bad method type alias: (TypeResolver,Class,TypeDef)void not visible from class #3801

Description

@eryanwcp

Search before asking

  • I had searched in the issues and found no similar issues.

Version

Fory(java) 1.2.0、1.3.0

Component(s)

Java

Minimal reproduce step

Tomcat 9.0.118 redeploy war

Caused by: java.lang.IllegalAccessException: no such constructor: com.eryansky.fastweixin.cluster.AccessTokenCacheForyRefCodecCompatible0_0.(TypeResolver,Class,TypeDef)void/invokeSpecial
at java.lang.invoke.MemberName.makeAccessException(MemberName.java:867)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1003)
at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1386)
at java.lang.invoke.MethodHandles$Lookup.findConstructor(MethodHandles.java:924)
at org.apache.fory.reflect.ReflectionUtils.lambda$getCtrHandle$1(ReflectionUtils.java:162)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.apache.fory.reflect.ReflectionUtils.getCtrHandle(ReflectionUtils.java:158)
at org.apache.fory.resolver.TypeResolver.newGeneratedCompatibleSerializer(TypeResolver.java:1244)
at org.apache.fory.resolver.TypeResolver.getMetaSharedTypeInfo(TypeResolver.java:1231)
at org.apache.fory.resolver.TypeResolver.createMetaSharedTypeInfo(TypeResolver.java:1079)
at org.apache.fory.resolver.TypeResolver.buildMetaSharedTypeInfo(TypeResolver.java:1064)
at org.apache.fory.resolver.TypeResolver.buildCheckedMetaSharedTypeInfo(TypeResolver.java:1090)
at org.apache.fory.resolver.TypeResolver.readSharedTypeDefInfo(TypeResolver.java:903)
at org.apache.fory.resolver.TypeResolver.readSharedClassTypeInfo(TypeResolver.java:882)
at org.apache.fory.resolver.TypeResolver.readTypeInfo(TypeResolver.java:633)
at org.apache.fory.context.ReadContext.readRef(ReadContext.java:532)
at org.apache.fory.Fory.deserialize(Fory.java:515)
... 104 more
Caused by: java.lang.LinkageError: bad method type alias: (TypeResolver,Class,TypeDef)void not visible from class com.eryansky.fastweixin.cluster.AccessTokenCacheForyRefCodecCompatible0_0
at java.lang.invoke.MemberName.checkForTypeAlias(MemberName.java:793)
at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:976)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1000)

public class ForySerializer implements Serializer {

private final static Logger log = org.slf4j.LoggerFactory.getLogger(ForySerializer.class);

private static volatile ThreadSafeFory fory = null;
private static final AllowListChecker typeChecker;

static {
    LoggerFactory.useSlf4jLogging(true);
    // AllowListChecker checker = new AllowListChecker(AllowListChecker.CheckLevel.STRICT);
    AllowListChecker checker = new AllowListChecker(AllowListChecker.CheckLevel.WARN);

    log.info("Using default TypeChecker: {} checkLevel: {}", checker.getClass().getName(), checker.getCheckLevel().name());
    typeChecker = checker;

    fory = Fory.builder().withLanguage(Language.JAVA)
            // Allow to deserialize objects unknown types, more flexible
            // but may be insecure if the classes contains malicious code.
            .withRefTracking(true)
            .requireClassRegistration(false)
            .withTypeChecker(typeChecker)
            .buildThreadSafeFory();
}

public ForySerializer(){

}

@Override
public String name() {
    return "fory";
}

@Override
public byte[] serialize(Object obj) throws IOException {
    return fory.serialize(obj);
}

@Override
public Object deserialize(byte[] bytes) throws IOException {
    return fory.deserialize(bytes);
}

public static ThreadSafeFory getFory() {
    return fory;
}

public static AllowListChecker getTypeChecker() {
    return typeChecker;
}
}

What did you expect to see?

Fory(java) 1.1.0 Tomcat 9.0.118 redeploy OK

What did you see instead?

Fory(java) Tomcat 9.0.118 redeploy OK

Anything Else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions