Java 在applet的EDT中运行I/O时遇到的问题

Java 在applet的EDT中运行I/O时遇到的问题,java,swing,io,applet,event-dispatch-thread,Java,Swing,Io,Applet,Event Dispatch Thread,我们的applet源代码有点像意大利面条(编写于2000年,当时是Java1.3),我们希望将其重新编译为Java1.6或1.7 当我测试它时,大多数Swing都是正常的,但是过了一段时间,出现了一个异常,这就是EDT异常。具体来说,当拖动事件完成时,会出现一系列EDT异常 这是否与在ActionListeners中编码I/O部分有关,因为我已经读到在action listeners中编码I/O操作是不好的,EDT在执行操作时会执行该操作 编辑: 这是重复出现的异常 Exception in t

我们的applet源代码有点像意大利面条(编写于2000年,当时是Java1.3),我们希望将其重新编译为Java1.6或1.7

当我测试它时,大多数Swing都是正常的,但是过了一段时间,出现了一个异常,这就是EDT异常。具体来说,当拖动事件完成时,会出现一系列EDT异常

这是否与在
ActionListeners
中编码I/O部分有关,因为我已经读到在action listeners中编码I/O操作是不好的,EDT在执行操作时会执行该操作

编辑:

这是重复出现的异常

Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException
    at javax.swing.BufferStrategyPaintManager.flushAccumulatedRegion(Unknown Source)
    at javax.swing.BufferStrategyPaintManager.copyArea(Unknown Source)
    at javax.swing.RepaintManager.copyArea(Unknown Source)
    at javax.swing.JViewport.blitDoubleBuffered(Unknown Source)
    at javax.swing.JViewport.windowBlitPaint(Unknown Source)
    at javax.swing.JViewport.setViewPosition(Unknown Source)
    at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.vsbStateChanged(Unknown Source)
    at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(Unknown Source)
    at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
    at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
    at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source)
    at javax.swing.JScrollBar.setValue(Unknown Source)
    at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(Unknown Source)
    at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(Unknown Source)
    at java.awt.Component.processMouseMotionEvent(Unknown Source)
    at javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

我想这与java插件的版本有关。 在Java1.6_10中,这个插件的新版本发布了,我刚刚在控制面板中禁用了java中的选项 高级->Java插件->启用下一代Java插件

当我禁用此功能时,不再出现这种重复出现的错误,并且没有明显的行为


我想这也与我们在Java 1.3时代编写的代码有关。

这很可能是由于非EDT线程访问UI代码造成的。用户界面代码只能由EDT访问。关于IO,不,EDT很少会这样做-请查看
SwingWorker
了解IO代码。拖动操作是如何导致I/O的?如果是“拖动时显示图标”之类的内容,则应在启动时加载图标。拖动滚动条或使用拖动动作调整表列大小会导致异常。。。我添加了异常堆栈。。谢谢,这是不是与jar中未打包的小程序有关。。因为我们所做的是将类文件直接嵌入到html文件中