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

升级到 2.0.1 后报错,java.lang.ClassNotFoundException #82

Closed
JingYeoh opened this issue May 4, 2018 · 25 comments
Closed

升级到 2.0.1 后报错,java.lang.ClassNotFoundException #82

JingYeoh opened this issue May 4, 2018 · 25 comments

Comments

@JingYeoh
Copy link

JingYeoh commented May 4, 2018

升级完aspectjx2.0.1之后报错。

升级前配置:

Gradle version: 3.3
Android Plugin Version: 2.3.1
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:1.1.1'

升级后配置:

Gradle version: 3.3
Android Plugin Version: 2.3.1
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.1'

错误信息:

java.lang.RuntimeException: Unable to instantiate application com.yj.app.App: java.lang.ClassNotFoundException: Didn't find class "com.yj.app.App" on path: DexPathList[[zip file "/data/app/com.yj.app-Rb0nPqV-LRjKeUte4oxl9w==/base.apk"],nativeLibraryDirectories=[/data/app/com.yj.app-Rb0nPqV-LRjKeUte4oxl9w==/lib/arm64, /system/lib64, /system/vendor/lib64]]
        at android.app.LoadedApk.makeApplication(LoadedApk.java:979)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6030)
        at android.app.ActivityThread.-wrap1(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6938)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.yj.app.App" on path: DexPathList[[zip file "/data/app/com.yj.app-Rb0nPqV-LRjKeUte4oxl9w==/base.apk"],nativeLibraryDirectories=[/data/app/com.yj.app-Rb0nPqV-LRjKeUte4oxl9w==/lib/arm64, /system/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1093)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:973)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6030) 
        at android.app.ActivityThread.-wrap1(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6938) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

com.yj.Appandroid.app.Application类。

@firefly1126
Copy link
Contributor

firefly1126 commented May 4, 2018

问一下出现这种情况是release的包吗?是否使用到了一些混淆或者加壳技术?

@JingYeoh
Copy link
Author

JingYeoh commented May 4, 2018

@firefly1126 debug包, 没有开启代码混淆。

@firefly1126
Copy link
Contributor

firefly1126 commented May 4, 2018

没有碰到过这种情况,是否有使用其他插件,能把你使用的插件列出来看一下吗?或者把build.gradle贴出来看一下。
最好在一个简单的Demo里跑一下看是否OK,对比一下和你的项目的差别在哪

@dashentao1989
Copy link

同样的问题,新版本不要依赖 classpath 'org.aspectj:aspectjtools:1.8.10'

@joffychim
Copy link

我也遇到了 我有使用hugo

@fqyb1986
Copy link

fqyb1986 commented May 23, 2018

同样遇到这个问题,引入aspectjx 2.0.1和aspectjrt1.9.1之后打出来的包比正常包小4M多。不知道和tinker有没有关系。

最新进展:

把aspectjx降级会2.0.0就好了

但是加上注解@aspect之后,还会有一些jar不会编译进apk中

@shouzhong
Copy link

shouzhong commented May 25, 2018

同样遇到这个问题,aspectjx 2.0.1。
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/multidex/MultiDex;
解决了,每个module都要引用插件

@Zhoucj1986
Copy link

同遇到这个问题,aspectjx2.0.1。
感觉和dex分包有关系,如果代码没多到需要分包,针对所有代码做切面就没问题。如果分包了,可能就出问题,需要设置gradle文件里aspectjx属性,include需要切面的代码,就没不报错了。

这个问题感觉很坑,如果要做新的切面,又得添加新的include

@liangbx361
Copy link

现在的项目肯定有分包,这个有什么好的解决方案吗

@Tim1008
Copy link

Tim1008 commented Aug 17, 2018

老铁们,有解吗?

@firefly1126
Copy link
Contributor

如果觉得include麻烦,可以用exclude替代

@Easy-Ez
Copy link

Easy-Ez commented Nov 2, 2018

@firefly1126
一直包如下错误:
java.lang.RuntimeException: Unable to instantiate application cn.org.yxj.doctorstation.DSApplication: java.lang.ClassNotFoundException: Didn't find class

搜了下issues 应该就是这个issue里面的问题了 想问下怎么解决呢
是通过在 app.gradle文件中添加
aspectjx{
include
}
吗?
include参数应该如何填呢 是将所有用到注解的代码路径添加进去吗,
或者exclude应该如何填写呢
谢谢~

ps:
project.gradle
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'

app.gradle
apply plugin: 'android-aspectjx'

@Student414
Copy link

2.0.4 + rt1.9.3,@around和@After/@before不能一起织入,否则会产生ClassNotFoundException。
其他无问题

@risechen
Copy link

同样遇到这个问题,aspectjx 2.0.1。
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/multidex/MultiDex;
解决了,每个module都要引用插件

module中怎么引用插件,能不能把配置贴出来看下

@risechen
Copy link

同遇到这个问题,aspectjx2.0.1。
感觉和dex分包有关系,如果代码没多到需要分包,针对所有代码做切面就没问题。如果分包了,可能就出问题,需要设置gradle文件里aspectjx属性,include需要切面的代码,就没不报错了。

这个问题感觉很坑,如果要做新的切面,又得添加新的include

include是直接inlude class,比如'com.xx.Person',还是include某个包,比如'com.xx'

@FCBXavi
Copy link

FCBXavi commented Jun 12, 2019

+1 找不到application,点开应用就crash,2.0.4版本,貌似有很多class没有打入dex文件,这个有解决方法了吗

@ooftf
Copy link

ooftf commented Jul 19, 2019

o

好像并不行啊,我所有module都使用了apply plugin: 'com.hujiang.android-aspectjx'还是不行

@noobyang
Copy link

同样的问题有解决方案了么?

@protectedMan
Copy link

+1 找不到application,点开应用就crash,2.0.4版本,貌似有很多class没有打入dex文件,这个有解决方法了吗

怎么处理的现在

@junyao-yu
Copy link

这个问题被关闭了,但到底是怎么解决的呢?

@linghp
Copy link

linghp commented Apr 26, 2020

日了 没人维护

@FCBXavi
Copy link

FCBXavi commented Apr 26, 2020

+1 找不到application,点开应用就crash,2.0.4版本,貌似有很多class没有打入dex文件,这个有解决方法了吗

怎么处理的现在

把有问题的类exclude出去可以暂时解决这个问题,但没从根源上解决,没发现exclude出去的类中的什么特性影响了插桩,最后换成ASM实现了

@xiachengcheng
Copy link

+1 找不到application,点开应用就crash,2.0.4版本,貌似有很多class没有打入dex文件,这个有解决方法了吗

怎么处理的现在

把有问题的类exclude出去可以暂时解决这个问题,但没从根源上解决,没发现exclude出去的类中的什么特性影响了插桩,最后换成ASM实现了

aspectjx {
 exclude '*'
}

还是不行

aspectjx {
 include 'com.android.apps.gccm.app' // 'com.android.apps.gccm.app.*' 也不行
}

将我所有class包括进来也不行。
始终在运行中崩溃,报:
java.lang.RuntimeException: Unable to instantiate application com.android.apps.gccm.App: java.lang.ClassNotFoundException:

@XBYoung
Copy link

XBYoung commented Jun 15, 2020

试一下

 aspectjx {
        //关闭AspectJX功能
        enabled true
    //排除所有package路径中包含`android.support`的class文件及库(jar文件)
        exclude 'android.support'
        exclude 'com.alibaba'
        exclude 'org.apache.weex'
        exclude 'com.aliyun'
        exclude 'com.taobao'
        exclude 'alibaba'
    }

@dean-lwh
Copy link

+1 找不到application,点开应用就crash,2.0.4版本,貌似有很多class没有打入dex文件,这个有解决方法了吗

请问最后如何解决的?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests