2015-10-16 29 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问题。可怕。谢谢你最终指引我走向正确的方向! –