jarchivelib icon indicating copy to clipboard operation
jarchivelib copied to clipboard

Didn't find class "java.nio.file.FileSystems" on version 1.0.0

Open ilyamuromets opened this issue 7 years ago • 2 comments

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.

ilyamuromets avatar Jan 21 '19 16:01 ilyamuromets

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.

MatthewTighe avatar Mar 28 '19 17:03 MatthewTighe

Could you suggest a fix?

thrau avatar Mar 29 '19 03:03 thrau