如何解决在 Android 应用程序中运行 gradle 插件时无法加载类“org.aspectj.bridge.MessageHandler”
我正在使用 aspectjtools
和 aspectjrt
为 android 创建 AOP 库 - Bernoulli. 该库按预期工作。
final def variants = project.android.applicationVariants
variants.all { variant ->
variant.javaCompile.doLast {
String[] args = ["-showweaveInfo","-1.5","-inpath",javaCompile.destinationDir.toString(),"-aspectpath",javaCompile.classpath.asPath,"-d","-classpath","-bootclasspath",project.android.bootclasspath.join(File.pathSeparator)]
new Main().run(args,new MessageHandler(true));
}
}
插件的build.gradle
-
plugins {
id 'signing'
id 'maven-publish'
id 'kotlin'
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
implementation gradleApi()
implementation localGroovy()
implementation 'com.android.tools.build:gradle:4.1.3'
api 'org.aspectj:aspectjrt:1.9.6'
api 'org.aspectj:aspectjtools:1.9.6'
}
task sourceJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}
publishing {
publications {
"$project.name"(MavenPublication) {
artifact "$buildDir/libs/$project.name-" + ARTIFACT_VERSION_NAME + ".jar"
}
}
}
代码已编译,jar 已创建,我可以将其发布到 mavenLocal
。
然后,当我在我的新项目中使用它时,它可以检测到插件并且不会引发构建错误。这是项目的 build.gradle
-
plugins {
id 'com.android.application'
}
// being fetched from mavenLocal
apply plugin: 'com.yugankasharan.bernoulli'
android {
compileSdkVersion 30
buildToolsversion "30.0.2"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {
// some android dependencies
// my Bernoulli library,being fetched from mavenCentral
implementation 'com.yugankasharan.bernoulli:bernoulli:0.2.1'
}
但是当我运行它时,我得到这个错误 -
Unable to load class 'org.aspectj.bridge.MessageHandler'.
This is an unexpected error. Please file a bug containing the idea.log file.
我的日志告诉我,这发生在我插件代码的 javaCompile.doLast
部分,我无法理解为什么会发生这种情况。
- 我认为这可能与 Java 版本有关,但我在所有项目和模块中明确使用了版本 8。
- 然后我认为这可能是 Gradle 问题,但我在我的库和新项目中使用的是最新(和相同版本)。
由于我的库可以正常工作,但我的插件却没有,我很确定我在某处搞砸了我的插件设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。