javax.ImageIO方法以静默方式失败

javax.ImageIO方法以静默方式失败,java,javax.imageio,Java,Javax.imageio,如果我的java代码调用任何javax.ImageIO方法,它会抛出一个静默错误。 e、 g 不会生成错误消息,但代码会在该点停止。 我试图调用ImageIO.getReaderFormatNames()只是为了查看,但它也抛出了一个无声错误。 这个问题发生在安装了oracle jre(java版本“1.8.0_60”)的Ubuntu中。 请注意,同样的代码在Windows(10)中工作得非常好。 我也尝试过FileInputStream FileInputStream fis = new Fi

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

不会生成错误消息,但代码会在该点停止。 我试图调用ImageIO.getReaderFormatNames()只是为了查看,但它也抛出了一个无声错误。 这个问题发生在安装了oracle jre(java版本“1.8.0_60”)的Ubuntu中。 请注意,同样的代码在Windows(10)中工作得非常好。 我也尝试过FileInputStream

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

在@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
希望它能帮助其他面临类似问题的人。

你能在调试器中单步执行吗?因为它停止了,所以可能没有失败,只是没有竞争。getScreenshotAs是如何工作的?@MadProgrammer try{}块中的conating ImageIO.read()行没有执行后,我的意思是任何事情,正如该行应该抛出错误时所预期的那样。@chenzen因此,
try{…}
中没有任何内容在
ImageIO.read
之后执行,但是您没有得到
异常
?尝试捕捉可丢弃的
twrowable
,看看这是否显示了任何东西(请随意添加,作为答案,突出显示操作系统和Java版本,可能有人会面临类似的问题;)我在Debian9系统上也遇到了同样的问题。现在在这方面工作了7个小时,完全没有堆栈跟踪或任何东西,另外,我的logback.xml记录问题。可怕的。谢谢你最终为我指明了正确的方向!
java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO