Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Android - 执行 JsonB.parsetObject() 抛出异常 NoSuchMethodError: No virtual method getShort(Ljava/lang/Object;J)S in class Lsun/misc/Unsafe; #2897

Open
JackCui001 opened this issue Aug 28, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@JackCui001
Copy link

JackCui001 commented Aug 28, 2024

问题描述

使用 2.0.52.android5 兼容版本,在Android端执行反序列化操作执行 JsonB.parsetObject() 时抛出异常 java.lang.NoSuchMethodError: No virtual method getShort(Ljava/lang/Object;J)S in class Lsun/misc/Unsafe;
与 Issue #2497 类似。

环境信息

  • OS信息: Android 6 (API Level 23) , Fingerprint:[Xiaomi/lineage_latte/latte:6.0.1/MOI10E/0b573b1efb:userdebug/test-keys]
  • JDK信息: OpenJDK 22.0.2
  • 版本信息:com.alibaba.fastjson2:fastjson2:2.0.52.android5
  • 编程语言:Kotlin 2.0.10

重现步骤

反序列化时使用 JsonB.parsetObject(),且使用了TypeReference。

bd.drawingView.setObjects(
                JSONB.parseObject(
                    it,
                    object : TypeReference<MutableList<DrawableObject>>() {}
                )
)

期待的正确结果

正常实现反序列化并不抛出异常。

相关日志输出

Logcat:

FATAL EXCEPTION: main
Process: com.jackcui.markapp, PID: 15965
Theme: themes:{default=overlay:org.cyanogenmod.hexolibre, iconPack:org.cyanogenmod.hexolibre, fontPkg:org.cyanogenmod.hexolibre, com.android.systemui=overlay:org.cyanogenmod.hexolibre, com.android.systemui.navbar=overlay:org.cyanogenmod.hexolibre}
java.lang.NoSuchMethodError: No virtual method getShort(Ljava/lang/Object;J)S in class Lsun/misc/Unsafe; or its super classes (declaration of 'sun.misc.Unsafe' appears in /system/framework/core-libart.jar)
	at com.alibaba.fastjson2.JSONReaderJSONB.readFieldNameHashCode(JSONReaderJSONB.java:1410)
	at com.alibaba.fastjson2.reader.ObjectReader4.readJSONBObject(ObjectReader4.java:164)
	at com.alibaba.fastjson2.reader.ObjectReaderImplList.readJSONBObject(ObjectReaderImplList.java:531)
	at com.alibaba.fastjson2.reader.FieldReaderObject.readFieldValue(FieldReaderObject.java:271)
	at com.alibaba.fastjson2.reader.ObjectReaderNoneDefaultConstructor.readJSONBObject(ObjectReaderNoneDefaultConstructor.java:151)
	at com.alibaba.fastjson2.reader.ObjectReaderImplList.readJSONBObject(ObjectReaderImplList.java:531)
	at com.alibaba.fastjson2.JSONB$-CC.parseObject(JSONB.java:904)
	at com.alibaba.fastjson2.JSONB$-CC.parseObject(JSONB.java:685)
	at com.jackcui.markapp.ProjectEditorActivity.deserialize(ProjectEditorActivity.kt:263)
	at com.jackcui.markapp.ProjectEditorActivity.initViewAndValue(ProjectEditorActivity.kt:281)
	at com.jackcui.markapp.ProjectEditorActivity.onCreate(ProjectEditorActivity.kt:43)
	at android.app.Activity.performCreate(Activity.java:6251)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
	at android.app.ActivityThread.-wrap11(ActivityThread.java)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loop(Looper.java:148)
	at android.app.ActivityThread.main(ActivityThread.java:5461)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

附加信息

Gradle引用的相关类:

implementation 'com.alibaba.fastjson2:fastjson2:2.0.52.android5'
implementation 'org.jetbrains.kotlin:kotlin-reflect:2.0.10'
@JackCui001 JackCui001 added the bug Something isn't working label Aug 28, 2024
@wenshao
Copy link
Member

wenshao commented Aug 29, 2024

什么设备啊,这么高的JDK版本

@JackCui001
Copy link
Author

这个是编译环境使用的JDK,目的是为了在编写代码时使用高版本的新增语言特性,应该和目标设备的运行环境没有关联。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants
@wenshao @JackCui001 and others