我可以看到这个问题经常被问到,但是我的情况有所不同。我在频道的简单搜索操作中观察到异常,这是我的代码:
private RandomAccessFile channel;
.....
try {
channel.seek(pos);
} catch (IOException ioe) {
System.err.printf("Seek file size %d seek to %d%n", originalSize, pos);
throw ioe;
}
我添加了 try 只是为了捕获发生异常的值。所以我在日志中看到类似的东西:
08-25 22:50:11.662: W/System.err(18839): Seek file size 2198818800 seek to 2196985856
08-25 22:50:11.682: E/wavpack(18839): Value too large for defined data type
08-25 22:50:11.682: E/wavpack(18839): java.io.IOException: Value too large for defined data type
08-25 22:50:11.682: E/wavpack(18839): at org.apache.harmony.luni.platform.OSFileSystem.seek(Native Method)
08-25 22:50:11.682: E/wavpack(18839): at dalvik.system.BlockGuard$WrappedFileSystem.seek(BlockGuard.java:210)
我没有方便的 Android 源来找出实际触发异常的原因。如果我在 Windows 或 Linux 下使用具有相同源数据的 Oracle Java,则代码运行良好。有什么线索吗?