如果我的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);
答案 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 希望它可以帮助其他人面临类似的问题。