Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes()

发布时间:2026/7/22 1:17:21
Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes() byte[]bytes;try{bytesinputStream.readAllBytes();}catch(IOExceptione){e.printStackTrace();Toast.makeText(this,文件读取失败,Toast.LENGTH_SHORT).show();return;}在 Android 开发中执行上述代码读取文件内容出现如下错误信息java.lang.NoSuchMethodError:No virtual method readAllBytes()[B in class Ljava/io/InputStream; or its super classes (declaration of java.io.InputStream appears in /apex/com.android.runtime/javalib/core-oj.jar)问题原因InputStream 的 readAllBytes 方法是 Java 9 引入的但直到 Android API 30Android 11才被加入 Android SDK如果 minSdkVersion 低于 30在低版本设备上运行时调用 readAllBytes 方法就会抛出 NoSuchMethodError 异常处理策略不使用 readAllBytes 方法改用兼容所有 Android 版本的方式使用 ByteArrayOutputStream 手动读取ByteArrayOutputStreambuffernewByteArrayOutputStream();intnRead;byte[]datanewbyte[1024];try{while((nReadinputStream.read(data,0,data.length))!-1){buffer.write(data,0,nRead);}}catch(IOExceptione){e.printStackTrace();Toast.makeText(this,PDF 文件读取失败,Toast.LENGTH_SHORT).show();return;}byte[]bytesbuffer.toByteArray();