この質問は頻繁に聞かれますが、私の状況は異なります。チャネルの単純なシーク操作で例外が発生しました。これが私のコードです。
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 を使用すると、コードは正常に動作します。どんな手掛かり?