javax.ImageIO方法无声地失败

时间:2015-10-16 20:38:39

标签: java javax.imageio

如果我的java代码调用任何javax.ImageIO方法,它会抛出一个无提示错误。 e.g。

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);

1 个答案:

答案 0 :(得分:2)

在@MadProgrammer建议我捕获Throwable而不是Exception进行调试后,我解决了这个问题。我发现我的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 希望它可以帮助其他人面临类似的问题。