Lotus Notes代理 - Java安全性错误

时间:2013-07-18 14:32:24

标签: java swing lotus agent

我有一个用Java编写的Lotus Notes代理,它应该在用户单击Notes客户端中的按钮后向用户弹出一条消息。尝试显示弹出窗口会导致我在Java调试控制台中看到的错误:

java.security.AccessControlException: Access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessController.checkPermission(AccessController.java:108)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)
at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449)
at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.java:1311)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1611)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
at java.lang.SecurityManager.checkExit(SecurityManager.java:756)
at java.lang.Runtime.exit(Runtime.java:99)
at java.lang.System.exit(System.java:279)
at ClipboardTest.main(Unknown Source)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)

我的代理商代码是

    import lotus.domino.*;
    import javax.swing.JOptionPane; 

    public class JavaAgent extends AgentBase {

public void NotesMain() {

  try {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();

      // (Your code goes here)
      Document cdoc = agentContext.getDocumentContext();
      String[] notesURL = new String[] {cdoc.getNotesURL()};
      ClipboardTest.main(notesURL);
      JOptionPane.showMessageDialog(null,"message","title",JOptionPane.WARNING_MESSAGE);

  } catch(Exception e) {
      e.printStackTrace();
   }

} }

我有经理访问数据库。可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:2)

首先看看错误实际是什么:

 Access denied (java.lang.RuntimePermission exitVM.0)

您告诉虚拟机死亡,您无权执行此操作。如果你有,你会导致在该JVM实例上运行的任何其他东西也死掉,可能导致挂起/崩溃。

其次,您的代码在ClipboardTest.main()方法失败,您尚未发布任何代码。

在代理属性中,有一个添加调试数据的选项。这将为您提供导致问题的确切行号。

我猜您在System.exit()进行了ClipboardTest.main()来电。它应该不存在。