2015-10-16 46 views
0

如果我的java代碼調用任何javax.ImageIO方法,則會引發無提示錯誤。 例如javax.ImageIO方法無提示失敗

File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
try 
{ 
    BufferedImage fullImg = ImageIO.read(screenshot); 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 

沒有生成錯誤消息,但代碼在該點停止。 我試圖調用ImageIO.getReaderFormatNames()來查看,但它也會引發無聲錯誤。 在安裝了oracle jre(java版本「1.8.0_60」)的Ubuntu中會發生此問題。 請注意,相同的代碼在Windows(10)中工作得很好。 我有嘗試過的FileInputStream以及

FileInputStream fis = new FileInputStream(screenshot); 
BufferedImage fullImg = ImageIO.read(fis); 
+0

你能在調試器中完成嗎? –

+0

自從停止之後,它可能並沒有失敗,它只是沒有競爭。 getScreenshotAs如何工作? – MadProgrammer

+0

@MadProgrammer我的意思是,在try {}塊內部的ImageIO.read()行不會執行,因爲在該行應該拋出一個錯誤時應該會這樣。 – chenzen

回答

2

我解決了這個問題@MadProgrammer建議我趕上的Throwable而不是例外調試後。我發現我的Ubuntu 15.04的機器沒有安裝libxtst6,導致下面的錯誤

java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory 

其最終導致下面的NoClassDefFoundError

java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO 

我的Java版本爲1.8.0_60 希望它幫助其他人面臨類似的問題。

+0

我在debian 9系統上有同樣的問題。現在工作了7小時,完全沒有堆棧跟蹤或任何事情,另外還記錄了我的logback.xml問題。可怕。謝謝你最終指引我走向正確的方向! –