Android Studio 3.4.2 Android 6.0
dependencies {
annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'commons-io:commons-io:2.6'
implementation 'edu.vt.middleware:vt-password:3.1.2'
implementation 'org.apache.commons:commons-collections4:4.1'
implementation "org.androidannotations:androidannotations-api:$AAVersion"
在android 6.0代码成功工作之前
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.*;
import org.apache.commons.io.FileUtils;
private File myPhotoTempDir;
if (myPhotoTempDir != null && myPhotoTempDir.exists()) {
FileUtils.deleteDirectory(myPhotoTempDir);
}
在Android 6.0上,我收到运行时错误:
FATAL EXCEPTION: main
Process: md.qsystems.android.tango.debug, PID: 7667
java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration of 'java.io.File' appears in /system/framework/core-libart.jar)
at org.apache.commons.io.FileUtils.isSymlink(FileUtils.java:3107)
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1616)
at com.myproject.profile.EditProfileFragment.goToPrevScreen(EditProfileFragment.java:915)
at com.myproject.profile.EditProfileFragment_.access$201(EditProfileFragment_.java:20)
at com.myproject.profile.EditProfileFragment_$3.run(EditProfileFragment_.java:95)
我的代码有什么问题? 谢谢。
答案 0 :(得分:2)
我有同样的问题。
此代码会导致您描述的相同错误:
private void clearHttpCacheDirectory(String fileName) {
File httpCacheDirectory = new File(getCacheDir(), fileName);
try {
FileUtils.deleteDirectory(httpCacheDirectory);
} catch (Exception e) {
Crashlytics.log(e.getMessage());
}
}
此lib可以正常运行,但对我来说看起来很旧:
implementation group: 'commons-io', name: 'commons-io', version: '2.4'
但是这个崩溃了:
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
因此,我决定使用2.5版本,因为如果我们看官方发行版,则2.6版有3个发行候选版,尚无稳定版本。所以这对我有用:https://github.com/apache/commons-io/releases
答案 1 :(得分:2)
我使用 commons-io-2.7 遇到了这个错误,但是当我回到 commons-io-2.5 时,一切都很好。
从这里得到它:https://downloads.apache.org//commons/io/binaries/commons-io-2.5-bin.zip
答案 2 :(得分:1)
我在Kotlin中使用了以下solution。 基本上,是Kotlin中默认的deleteRecursively方法。