错误记录Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:xxxaspectjtools-1.8.10.jar. )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误记录Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:xxxaspectjtools-1.8.10.jar. )相关的知识,希望对你有一定的参考价值。
一、报错信息
在 Android Studio 中配置 AspectJ , 配置后的 Module 下的 build.gradle 如下 : 这是在 AS 中配置 AspectJ 的固定配置 ;
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.aspectj:aspectjtools:1.8.10'
classpath 'org.aspectj:aspectjweaver:1.8.10'
}
}
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.aop_demo"
minSdkVersion 18
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
import org.aspectj.bridge.IMessage
import org.aspectj.bridge.MessageHandler
import org.aspectj.tools.ajc.Main
final def log = project.logger
final def variants = project.android.applicationVariants
variants.all { variant ->
if (!variant.buildType.isDebuggable()) {
log.debug("Skipping non-debuggable build type '${variant.buildType.name}'.")
return;
}
JavaCompile javaCompile = variant.javaCompile
javaCompile.doLast {
String[] args = ["-showWeaveInfo",
"-1.8",
"-inpath", javaCompile.destinationDir.toString(),
"-aspectpath", javaCompile.classpath.asPath,
"-d", javaCompile.destinationDir.toString(),
"-classpath", javaCompile.classpath.asPath,
"-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)]
log.debug "ajc args: " + Arrays.toString(args)
MessageHandler handler = new MessageHandler(true);
new Main().run(args, handler);
for (IMessage message : handler.getMessages(null, true)) {
switch (message.getKind()) {
case IMessage.ABORT:
case IMessage.ERROR:
case IMessage.FAIL:
log.error message.message, message.thrown
break;
case IMessage.WARNING:
log.warn message.message, message.thrown
break;
case IMessage.INFO:
log.info message.message, message.thrown
break;
case IMessage.DEBUG:
log.debug message.message, message.thrown
break;
}
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation files('libs/aspectjrt.jar')
}
报错信息如下 :
A problem occurred configuring project ':app'.
> Failed to create Jar file C:\\Users\\octop\\.gradle\\caches\\jars-8\\98ff8367eea2b127f04c33920487762b\\aspectjtools-1.8.10.jar.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
Caused by: org.gradle.api.GradleException: Failed to create Jar file C:\\Users\\octop\\.gradle\\caches\\jars-8\\98ff8367eea2b127f04c33920487762b\\aspectjtools-1.8.10.jar.
Caused by: java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:259)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:177)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:163)
... 6 more
Executing tasks: [clean] in project D:\\002_Project\\002_Android_Learn\\AOP_Demo
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Failed to create Jar file C:\\Users\\octop\\.gradle\\caches\\jars-8\\98ff8367eea2b127f04c33920487762b\\aspectjtools-1.8.10.jar.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 529ms
二、解决方案
尝试过很多方案后 , 发现是 Gradle 版本 和 Gradle 插件版本的问题 , 这个配置很旧 , 需要使用老版本的的 Gradle 和 对应的插件版本 ;
Gradle 版本 : 在 \\gradle\\wrapper\\gradle-wrapper.properties 中配置 5.6.4 5.6.4 5.6.4 版本的 Gradle ;
distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
Gradle 插件版本 : 在 3.6.1 3.6.1 3.6.1 版本的 Gradle 插件 ;
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:3.6.1"
}
}
三、Gradle 与 Gradle 插件版本适配
参考文档 : https://developer.android.google.cn/studio/releases/gradle-plugin
以上是关于错误记录Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:xxxaspectjtools-1.8.10.jar. )的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
错误记录Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
错误记录Android Studio 配置 AspectJ 报错 ( all buildscript {} blocks must appear before any plugins {} )(代码片
错误记录Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:xxxaspectjtools-1.8.10.jar. )
错误记录Android Studio 编译报错 ( Error: Duplicate resources | 使用 sourceSets 配置多个 res 资源不能有重复名称的资源 )
错误记录Android Studio 配置 GitHub 报错 ( Can‘t login using given credentials: Request response: 401 Una )(代