16:20:48,234 ERROR [STDERR] Exception in thread "AWT-EventQueue-0" 
java.lang.NullPointerException
16:20:48,234 ERROR [STDERR]  at com.port.action.R_Frame.actionPerformed(R_Frame.java:77)
16:20:48,234 ERROR [STDERR]  at java.awt.Button.processActionEvent(Button.java:392)
16:20:48,234 ERROR [STDERR]  at java.awt.Button.processEvent(Button.java:360)
16:20:48,234 ERROR [STDERR]  at java.awt.Component.dispatchEventImpl(Component.java:4630)
16:20:48,234 ERROR [STDERR]  at java.awt.Component.dispatchEvent(Component.java:4460)
16:20:48,234 ERROR [STDERR]  at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
16:20:48,250 ERROR [STDERR]  at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
我做的一个JAVA读取据串口数据,第一次打开可以,第2次打开就报这个错````只有重新启动TOMCAT才可以````高手看看``
我的action是这样
    /**//*  实例化接收串口数据的窗体类  */
 final R_Frame R_win=new R_Frame();
 R_win.setPortName(portName);
 R_win.setRate(rate);
 R_win.setDATABITS(DATABITS);
 R_win.setSTOPBITS(STOPBITS);
/**//*  定义窗体适配器的关闭按钮功能 */
     R_win.addWindowListener(new WindowAdapter()
             {public void windowClosing(WindowEvent e)
                { R_win.dispose();
              return;
              }
      });
   R_win.pack();
   return null;

解决方案 »

  1.   

    dispose方法是:释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。
    GUI我没有怎么用过,但是看API觉得这里你用System.exit(-1);会达到你要的效果 
      

  2.   

    扯淡 System.exit(-1) 就退出整个程序了
      

  3.   

    at com.port.action.R_Frame.actionPerformed(R_Frame.java:77) 是哪行
      

  4.   

    at com.port.action.R_Frame.actionPerformed(R_Frame.java:77) 是 什么代码
      

  5.   

        是这句```
    try {
    serialPort.addEventListener(this);

            catch (TooManyListenersException e) { }
            /**//* 侦听到串口有数据,触发串口事件*/
         serialPort.notifyOnDataAvailable(true);
       readThread = new Thread(this);
       readThread.start();//线程负责每接收一次数据休眠20秒钟
     } //actionPerformed() end
      

  6.   

    为啥不debug呢?
    你都知道哪行 这行里有什么对象
    你打印一下不就行了?
    serialPort == null