2012-11-07 104 views
0

我目前正在研究Java Multimedia IO Project並正在測試RIFFInputStream,但在測試時遇到了NegativeArraySizeException;以下是調試控制檯的輸出;閱讀RIFF文件時出現NegativeArraySizeException

RIFF Stream type: AVI 
Chunks contained in this stream: 

LIST::hdrl 
    avih 
    LIST 
    LIST 
LIST::INFO 
    ISFT 
Exception in thread "main" java.lang.NegativeArraySizeException 
    at javax.io.RIFFList.<init>(RIFFList.java:25) 
    at javax.io.RIFFInputStream.next(RIFFInputStream.java:58) 
    at javax.io.RIFFInputStream.next(RIFFInputStream.java:56) 
    at Test.main(Test.java:25) 

當我第一次收到這個異常時,我下載了一個RIFF查看器,查看器列出了下列塊;

RIFF:AVI 
    LIST:hdrl 
     avih 
     LIST:strl 
     LIST:strl 
     JUNK 
    LIST:INFO 
     ISFT 
    JUNK 
    LIST:movi 
    idx1 

所以發生了什麼事看起來是RIFFList構造函數代碼是有問題的建設movi列表。我想知道的是爲什麼它從流中收到一個負數?

謝謝,利亞姆。

+0

你還能夠複製這個問題嗎?如果您可以創建一個[MCVE](http://stackoverflow.com/help/mcve)來演示此問題,則可以提交一個[JDK bug](http://bugs.java.com/)。 – dimo414

回答

0

我發現了問題並修復了它。

重新讀取RIFF標準後發現的問題是,當塊數據不均勻時,將會添加填充字節,但該字節不會顯示在塊大小上,所以我在RIFFList初始化代碼是我告訴它如果它正在讀取的塊是不均勻的,則將其添加到位置編號。