如何解决Android 6.0中无法编译出jar
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决Android 6.0中无法编译出jar相关的知识,希望对你有一定的参考价值。
1、将jar包放入项目里的libs文件夹中。2、在project选中jar包点击右键"Add as library"。
3、这两步是网上比较容易找到的,但此时项目仍然是无法正常编译的,这时需要在项目的build.gradle文件里的dependencies节加入 dependencies
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
4、此时项目正常编译并运行了,但当自己的代码中真正创建了引用jar里的类实例时,有可能系统会抛出异常NoClassDefFoundError,这个时候可以按以下步骤操作:
进入命令提示符窗口。
定位到项目的根目录,即build.gradle所在的目录。
运行 "android studio 安装目录\sdk\tools\templates\gradle\wrapper\gradlew.bat" clean
重新编译运行项目 参考技术A 1、将jar包放入项目里的libs文件夹中。
2、在project选中jar包点击右键"Add as library"。
3、这两步是网上比较容易找到的,但此时项目仍然是无法正常编译的,这时需要在项目的build.gradle文件里的dependencies节加入 dependencies
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
4、此时项目正常编译并运行了,但当自己的代码中真正创建了引用jar里的类实例时,有可能系统会抛出异常NoClassDefFoundError,这个时候可以按以下步骤操作:
进入命令提示符窗口。
定位到项目的根目录,即build.gradle所在的目录。
运行 "android studio 安装目录\sdk\tools\templates\gradle\wrapper\gradlew.bat" clean
重新编译运行项目
如何解决 NoClassDefFoundError:Apache Commons Lang Android
【中文标题】如何解决 NoClassDefFoundError:Apache Commons Lang Android【英文标题】:How to solve NoClassDefFoundError: Apache Commons Lang Android 【发布时间】:2021-05-19 13:27:04 【问题描述】:当我尝试使用 DateUtils.addMinutes()
时收到此异常:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.apprainha, PID: 7742
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NoClassDefFoundError: org.apache.commons.lang3.-$$Lambda$Validate$XJJZURDO20sZXXyZMfTRRv13t2c
at org.apache.commons.lang3.Validate.notNull(Validate.java:225)
at org.apache.commons.lang3.time.DateUtils.validateDateNotNull(DateUtils.java:1789)
at org.apache.commons.lang3.time.DateUtils.add(DateUtils.java:515)
at org.apache.commons.lang3.time.DateUtils.addMinutes(DateUtils.java:472)
at com.example.apprainha.threads.ExportaDados.exportCSVs(ExportaDados.java:187)
at com.example.apprainha.threads.ExportaDados.doInBackground(ExportaDados.java:60)
at com.example.apprainha.threads.ExportaDados.doInBackground(ExportaDados.java:33)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
我的代码正在调用 DateUtils.addminutes()
以向变量 date
添加 1 分钟,如下所示:
Date target = DateUtils.addminutes(date, 1);
我将正确的依赖项放在我的 Gradle 文件中:
implementation 'org.apache.commons:commons-lang3:3.11'
我对这个错误进行了很多研究,但其他帖子中提到的解决方案都没有解决我的问题。我该如何解决?
【问题讨论】:
【参考方案1】:将您的成绩文件更改为:
implementation 'org.apache.commons:commons-lang3:3.6'
然后你可以在你的类中使用这个导入:
import org.apache.commons.lang3.StringUtils;
【讨论】:
作为记录,我将 Gradle 上的 Apache Commons 版本从 3.11 更改为 3.6,就像 @saon_srabon 推荐的那样。此更改解决了问题。以上是关于如何解决Android 6.0中无法编译出jar的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 怎么添加使用第三方jar包及无法编译的问题解决方法
Android 11使用Android Studio调试系统应用:编译Settings 模块解决编译错误