Closed mr-xia closed 7 years ago
PatchsInfoImpl failed,cause ofjava.lang.ClassNotFoundException: Didn't find class 你改了这个"com.xxs.practicedemo.patch.PatchesInfoImpl" ,还原试试?
还原成了com.meituan.robust.patch还是不行。。。。。
你检查一下你的git commit,看看还有没有相关的改动
2017年8月11日 16:11,"mr-xia" notifications@github.com写道:
还原成了com.meituan.robust.patch还是不行。。。。。
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Meituan-Dianping/Robust/issues/187#issuecomment-321753778, or mute the thread https://github.com/notifications/unsubscribe-auth/AHgyAS9QnjIIku5Nb1boPPQVSDEBxoutks5sXAycgaJpZM4O0VlP .
git commit这怎么检查?
可以看看你当前的代码吗?
围观,我也是类找不到
08-14 18:08:53.197 25053-25590/org.gaia.supplier I/icon_receipt: patch.jar 路径 /storage/emulated/0/gaia/patch.jar
08-14 18:08:53.198 25053-25590/org.gaia.supplier W/System: ClassLoader referenced unknown path: null_temp.jar
08-14 18:08:53.200 25053-25590/org.gaia.supplier W/System.err: java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
08-14 18:08:53.200 25053-25590/org.gaia.supplier W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-14 18:08:53.200 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:08:53.201 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
08-14 18:08:53.201 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.patch(Unknown Source)
08-14 18:08:53.201 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.applyPatchList(Unknown Source)
08-14 18:08:53.201 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.run(Unknown Source)
08-14 18:08:53.201 25053-25590/org.gaia.supplier W/System.err: Suppressed: java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[zip file "/data/app/org.gaia.supplier-1/base.apk"],nativeLibraryDirectories=[/data/app/org.gaia.supplier-1/lib/arm, /data/app/org.gaia.supplier-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
08-14 18:08:53.202 25053-25590/org.gaia.supplier W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-14 18:08:53.202 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:08:53.202 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-14 18:08:53.202 25053-25590/org.gaia.supplier W/System.err: ... 4 more
08-14 18:08:53.202 25053-25590/org.gaia.supplier W/System.err: Suppressed: java.lang.ClassNotFoundException: com.meituan.robust.patch.PatchesInfoImpl
08-14 18:08:53.203 25053-25590/org.gaia.supplier W/System.err: at java.lang.Class.classForName(Native Method)
08-14 18:08:53.203 25053-25590/org.gaia.supplier W/System.err: at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
08-14 18:08:53.203 25053-25590/org.gaia.supplier W/System.err: at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
08-14 18:08:53.203 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-14 18:08:53.203 25053-25590/org.gaia.supplier W/System.err: ... 5 more
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
08-14 18:08:53.204 25053-25590/org.gaia.supplier I/icon_receipt: robust arrived in exceptionNotify class:PatchExecutor method:patch line:108
08-14 18:08:53.204 25053-25590/org.gaia.supplier E/robust: PatchsInfoImpl failed,cause ofjava.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
08-14 18:08:53.204 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.patch(Unknown Source)
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.applyPatchList(Unknown Source)
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: at com.meituan.robust.PatchExecutor.run(Unknown Source)
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: Suppressed: java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[zip file "/data/app/org.gaia.supplier-1/base.apk"],nativeLibraryDirectories=[/data/app/org.gaia.supplier-1/lib/arm, /data/app/org.gaia.supplier-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:08:53.205 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-14 18:08:53.206 25053-25590/org.gaia.supplier W/System.err: ... 4 more
08-14 18:08:53.206 25053-25590/org.gaia.supplier W/System.err: Suppressed: java.lang.ClassNotFoundException: com.meituan.robust.patch.PatchesInfoImpl
08-14 18:08:53.206 25053-25590/org.gaia.supplier W/System.err: at java.lang.Class.classForName(Native Method)
08-14 18:08:53.206 25053-25590/org.gaia.supplier W/System.err: at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
08-14 18:08:53.206 25053-25590/org.gaia.supplier W/System.err: at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
08-14 18:08:53.207 25053-25590/org.gaia.supplier W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-14 18:08:53.207 25053-25590/org.gaia.supplier W/System.err: ... 5 more
08-14 18:08:53.207 25053-25590/org.gaia.supplier W/System.err: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
@hedex 你要看那个文件的代码?
@zaihuishou 我的报错和你一样......
楼主我也是,问题怎么解决的?
楼主我也是,问题怎么解决的?
看一下是不是没有把patch拷贝到app私有目录下,注意官方Demo里PatchManipulateImp类里verifyPatch()函数的实现。 我是这么解决的,不知道能不能帮到你。
异常类型:PatchesInfoImpl class not found
手机型号:如:小米 5 手机系统版本:如:Android 7.0
Robust版本:如:0.4.7
Gradle版本:如:3.3
系统:win7
在我写的demo中一直都报PatchesInfoImpl class not found,我没有用混淆。 下面是部分代码: PatchManipulateImp.java:
public class PatchManipulateImp extends PatchManipulate { /**
@return */ @Override protected List fetchPatchList(Context context) {
Patch patch = new Patch();
patch.setName("test_123");
patch.setLocalPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "meituan");
patch.setPatchesInfoImplClassFullName("com.xxs.practicedemo.patch.PatchesInfoImpl");
List patches = new ArrayList();
patches.add(patch);
return patches;
}
/**
@return you can verify your patches here */ @Override
protected boolean verifyPatch(Context context, Patch patch) { patch.setTempPath(Environment.getExternalStorageDirectory().getPath()+ File.separator+"robust"+File.separator + "patch"); try { copy(patch.getLocalPath(), patch.getTempPath()); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("copy source patch to local patch error, no patch execute in path " + patch.getTempPath()); }
}
public void copy(String srcPath, String dstPath) throws IOException { File src = new File(srcPath); if (!src.exists()) { throw new RuntimeException("source patch does not exist "); } File dst = new File(dstPath); if (!dst.getParentFile().exists()) { dst.getParentFile().mkdirs(); } InputStream in = new FileInputStream(src); try { OutputStream out = new FileOutputStream(dst); try { // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } finally { out.close(); } } finally { in.close(); } }
/**
robust.xml: <?xml version="1.0" encoding="utf-8"?>
app下的bulid.gradle的头部: apply plugin: 'com.android.application' //apply plugin: 'auto-patch-plugin' apply plugin: 'robust'
每次加载补丁的时候都会报错: PatchsInfoImpl failed,cause ofjava.lang.ClassNotFoundException: Didn't find class "com.xxs.practicedemo.patch.PatchesInfoImpl" on path: DexPathList[[zip file "/storage/emulated/0/robust/patch_temp.jar"],nativeLibraryDirectories=[/system/lib64, /vendor/lib64]] 而打印的日志显示补丁文件meituan.jar确实存在,我用jadx-gui打开补丁文件也确实存在com.xxs.practicedemo.patch.PatchesInfoImpl.java这个类。
请问我哪里写错了吗?