You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APK缺失类导致Android模拟器运行崩溃问题求助

Android模拟器运行时类缺失崩溃问题(目标SDK 32)

问题描述

APK可正常构建,应用启动后运行到某阶段崩溃,抛出类缺失异常。根因提示Didn't find class "org.w3c.dom.events.EventTarget" on path,该类属于JRE类,非外部依赖。当前目标Android SDK版本为32,需先解决此问题再考虑升级。

崩溃日志

05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): An error occurred while executing a task on the OperationQueue.
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xerces/dom/CoreDocumentImpl;
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setFeature(Unknown Source:126)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at c.e.a.f.d.j.x(:42)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at com.xxx.scratch.c.p.b.F(:200)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at com.xxx.scratch.c.p.b$c.run(:126)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at com.xxx.scratch.c.s.a$a.run(:34)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.util.concurrent.FutureTask.run(FutureTask.java:264)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.Thread.run(Thread.java:1012)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.CoreDocumentImpl
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.VMClassLoader.findLoadedClass(Native Method)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xerces/dom/ParentNode;
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.ParentNode
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.VMClassLoader.findLoadedClass(Native Method)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xerces/dom/ChildNode;
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.ChildNode
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.VMClassLoader.findLoadedClass(Native Method)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xerces/dom/NodeImpl;
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.NodeImpl
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.VMClassLoader.findLoadedClass(Native Method)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/w3c/dom/events/EventTarget;
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.w3c.dom.events.EventTarget" on path: DexPathList[[zip file "/data/app/~~j6mpgpLbTOaBmECGO2VDdg==/com.xxx.android-eY9BUVhcBhZ_6-C0HJGejA==/base.apk"],nativeLibraryDirectories=[/data/app/~~j6mpgpLbTOaBmECGO2VDdg==/com.xxx.android-eY9BUVhcBhZ_6-C0HJGejA==/lib/arm64, /data/app/~~j6mpgpLbTOaBmECGO2VDdg==/com.xxx.android-eY9BUVhcBhZ_6-C0HJGejA==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-31 18:47:44.426 E/com.xxx.scratch.c.s.a(30483):  ... 10 more

解决方案

方案1:添加XML相关依赖到项目

Android SDK并未完整包含所有JRE类,结合项目依赖的Xerces库需求,可手动引入包含EventTarget类的依赖:
在模块级build.gradle的dependencies块中添加:

implementation 'xml-apis:xml-apis:1.4.01'
// 或补充JAXB相关依赖以覆盖完整XML处理类
implementation 'javax.xml.bind:jaxb-api:2.3.1'
implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.1'

同步项目后重新构建运行。

方案2:配置ProGuard规则(若启用混淆)

如果项目开启了ProGuard,可能是混淆时移除了相关类,在proguard-rules.pro中添加:

-keep class org.w3c.dom.events.** { *; }
-keep class org.apache.xerces.dom.** { *; }

确保这些类不被混淆或移除。

方案3:替换为Android内置XML解析器

项目依赖的Xerces库可能与Android环境不兼容,可替换为系统内置解析器:
找到代码中创建DocumentBuilderFactory的位置,修改为:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 禁用DOCTYPE声明避免依赖特定实现
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

使用Android系统自带解析器,规避外部Xerces依赖。

方案4:调整SDK兼容性配置

在模块级build.gradle中添加:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    packagingOptions {
        pickFirst 'META-INF/*.xml'
    }
}

确保Java版本兼容,打包时正确处理XML相关资源。


内容的提问来源于stack exchange,提问作者BenoitD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:45:54