2013-07-18 2 views
0

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

} }

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

+0

Где находятся JavaDocs для 'AgentBase'? –

ответ

2

Первый взгляд на то, что ошибка на самом деле:

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

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

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

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

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

+1

Симон, большое вам спасибо. После удаления System.exit() из ClipboardTest.main() диалоговое окно теперь отображается правильно. –

Смежные вопросы