jarchivelib
jarchivelib copied to clipboard
Didn't find class "java.nio.file.FileSystems" on version 1.0.0
Nexus 6 Android 7.1.1 library 1.0.0
When I use Archiver.extract() I get fatal:
Process: my.app, PID: 29625
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/nio/file/FileSystems;
at org.rauschig.jarchivelib.FileModeMapper.<clinit>(FileModeMapper.java:38)
at org.rauschig.jarchivelib.FileModeMapper.map(FileModeMapper.java:60)
at org.rauschig.jarchivelib.CommonsArchiver.extract(CommonsArchiver.java:106)
at org.rauschig.jarchivelib.CommonsArchiver.extract(CommonsArchiver.java:91)
at org.rauschig.jarchivelib.ArchiverCompressorDecorator.extract(ArchiverCompressorDecorator.java:91)
at my.app.android.cache.MyCache.unpack(MyCache.java:165)
at my.app.android.cache.MyCache.save(MyCache.java:90)
at my.app.android.cache.Cacher$1.onResponse(Cacher.java:100)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.nio.file.FileSystems" on path: DexPathList[[zip file "/data/app/my.app-1/base.apk"],nativeLibraryDirectories=[/data/app/my.app-1/lib/arm, /data/app/my.app-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.rauschig.jarchivelib.FileModeMapper.<clinit>(FileModeMapper.java:38)
at org.rauschig.jarchivelib.FileModeMapper.map(FileModeMapper.java:60)
at org.rauschig.jarchivelib.CommonsArchiver.extract(CommonsArchiver.java:106)
at org.rauschig.jarchivelib.CommonsArchiver.extract(CommonsArchiver.java:91)
at org.rauschig.jarchivelib.ArchiverCompressorDecorator.extract(ArchiverCompressorDecorator.java:91)
at my.app.android.cache.MyCache.unpack(MyCache.java:165)
at my.app.android.cache.MyCache.save(MyCache.java:90)
at my.app.android.cache.Cacher$1.onResponse(Cacher.java:100)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Library version 0.7.1 and 0.8.0 on this device works fine.
Xiaomi Mi A1 Android 9 library 1.0.0 On this device all works fine on all library version.
Looks like the only call is https://github.com/thrau/jarchivelib/blob/8afee5124c588f589306796985b722d63572bbfa/src/main/java/org/rauschig/jarchivelib/FileModeMapper.java#L38
This completely breaks the library for all versions of Android older than SDK level 26, Android 8.0 Oreo. FileSystems was added in that version.
Could you suggest a fix?