如果我的java代码调用任何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);发布于 2015-10-17 06:14:00
在@MadProgrammer建议我捕获Throwable而不是Exception来调试之后,我解决了这个问题。我发现我的Ubuntu15.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,希望它能帮助其他面临类似问题的人。
https://stackoverflow.com/questions/33179187
复制相似问题