我会说这是一个小错误
sun.awt.Disposer。
该类创建“ Java2D
Disposer”守护程序线程,该线程处理处置垃圾收集对象(主要是AWT窗口)的AWT资源。大多数情况下,线程在其参考队列上等待新的一次性对象被垃圾回收。当线程中断时,它将显式打印该异常。
JVM终止时,它将中断所有线程。在某些情况下-显然受JFileChooser的使用和它所初始化的子系统的影响-
在此中断之后,某些线程仍然有机会运行。在这种情况下
InterruptedException,“ Java2D
Disposer”线程中将引发,因为它正在等待锁。如果它在关闭期间忽略该异常会更好。
解决方法是更换
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
与
frame.setDefaultCloseOperation(Jframe.DISPOSE_ON_CLOSE);frame.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { PrintStream nullStream = new PrintStream(new OutputStream() { public void write(int b) throws IOException { } public void write(byte b[]) throws IOException { } public void write(byte b[], int off, int len) throws IOException { } }); System.setErr(nullStream); System.setOut(nullStream); System.exit(0); }});


