Агент Lotus Notes — ошибка безопасности Java

У меня есть агент Lotus Notes, написанный на Java, который должен отображать сообщение пользователю после его выполнения, нажав кнопку в клиенте 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();
   }

} }

У меня есть доступ администратора к базе данных. Что может быть причиной этой ошибки?


person Community    schedule 18.07.2013    source источник
comment
Где JavaDocs для AgentBase?   -  person Andrew Thompson    schedule 18.07.2013


Ответы (1)


Сначала посмотрите, в чем ошибка на самом деле:

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

Вы говорите ВМ умереть, и у вас нет на это прав. Если бы вы это сделали, вы бы также заставили все остальное, работающее на этом экземпляре JVM, умереть, что, возможно, привело бы к зависанию/сбою.

Во-вторых, ваш код не работает в методе ClipboardTest.main(), для которого вы не разместили никакого кода.

В свойствах агента есть возможность добавить отладочные данные. Это даст вам точный номер строки, которая вызывает проблему.

Я предполагаю, что у вас есть вызов System.exit() в ClipboardTest.main() . Этого не должно быть.

person Simon O'Doherty    schedule 18.07.2013
comment
Саймон, большое спасибо. После удаления System.exit() из ClipboardTest.main() диалог теперь отображается правильно. - person ; 18.07.2013