程序简单描述如下:package icq.trayIcon;public class TrayToolKit {
  private static boolean _isStop = false;
  public static WindowsTrayIcon _icon = null;
  public static void main(String[] args) {
     try {
         //第一次得到环境 这里可以成功得到
         Context context = new InitialContext()
         //得到环境后的系列操作;
      }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    TrayToolKit toolKit = new TrayToolKit();
    toolkit.showMessageTip("系统消息提示");
  }  public boolean showMessageTip(String appName) {
    try {
      stop(false);
      Image imgs[] = new Image[5];
      imgs[0] = new ImageIcon(icon.GetIcons.class.
                              getResource("pic1.gif")).getImage();
      imgs[1] = new ImageIcon(icon.GetIcons.class.
                              getResource("pic2.gif")).getImage();
      imgs[2] = new ImageIcon(icon.GetIcons.class.
                              getResource("pic3.gif")).getImage();
      imgs[3] = new ImageIcon(icon.GetIcons.class.
                              getResource("pic4.gif")).getImage();
      imgs[4] = new ImageIcon(icon.GetIcons.class.
                              getResource("pic5.gif")).getImage();
      _icon = new WindowsTrayIcon(imgs[0], 16, 16, appName);
      _icon.setToolTipText(appName);
      TestMouseListener mouse = new TestMouseListener();
      _icon.addMouseListener(mouse);
      _icon.setPopup(makePopup());
      _icon.setVisible(true);
      WindowsTrayIcon.keepAlive();
      // Show icon in loop
      int idx = 0;
      while (!_isStop) {
        _icon.setImage(imgs[idx], 16, 16);
        //icon.setToolTipText(tips[idx]);
        idx = (idx + 1) % 5;
        Thread.sleep(200);
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    return false;
  }  public TrayIconPopup makePopup() {
    // Make new popup menu
    TrayIconPopup popup = new TrayIconPopup();
    // Add about, configure  & exit item
    TrayIconPopupSimpleItem item = new TrayIconPopupSimpleItem("消息中心");
    item.addActionListener(new AboutListener());
    popup.addMenuItem(item);
    // Add configure item
    item = new TrayIconPopupSimpleItem("消息设置");
    item.addActionListener(new ConfigureListener());
    popup.addMenuItem(item);
    // Add a separator
    TrayIconPopupSeparator sep = new TrayIconPopupSeparator();
    popup.addMenuItem(sep);
    // Add exit item
    item = new TrayIconPopupSimpleItem("查看新消息");
    item.addActionListener(new ExitListener());
    popup.addMenuItem(item);
    return popup;
  }  private class AboutListener
      implements ActionListener {
    public void actionPerformed(ActionEvent evt) {
      // 直接进入任务箱的消息中心
     try {
         //第二次得到环境 执行JNI后,再次得到环境,这里错误,没有执行得到环境后的系列操作  直接跳到后面的语句
         Context context = new InitialContext()
         //得到环境后的系列操作;
      }
    catch (Exception ex) {
      ex.printStackTrace();
    }    }
  }  // Callback listener handles about button
  private class ConfigureListener
      implements ActionListener {    public void actionPerformed(ActionEvent evt) {
      //  调用消息读取设置界面
   }
  }  private class ExitListener
      implements ActionListener {    public void actionPerformed(ActionEvent evt) {
//      WindowsTrayIcon.cleanUp();
      // 显示新消息窗口
    }
  }  private class TestMouseListener
      extends MouseAdapter {
    public void mousePressed(MouseEvent evt) {
      if ( (evt.getModifiers() & MouseEvent.BUTTON1_MASK) != 0 &&
          evt.getClickCount() == 2) {
        //    显示新消息窗口
      }
    }
  }  private void stop(boolean flag) {
    this._isStop = flag;
    if (this._icon != null)
      this._icon.setVisible(false);
  }  public void close() {
    if (this._icon != null) {
      this._icon.cleanUp();
      this._icon = null;
    }
  }}
我反复尝试,错误信息,如下javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory.  Root exception is java.lang.ClassNotFoundException: org/jnp/interfaces/NamingContextFactory
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:195)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:45)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:652)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:246)
at javax.naming.InitialContext.init(InitialContext.java:222)
at javax.naming.InitialContext.<init>(InitialContext.java:178)解决必有重谢