我有一个用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();
}
} }
我有经理访问数据库。可能导致此错误的原因是什么?
答案 0 :(得分:2)
首先看看错误实际是什么:
Access denied (java.lang.RuntimePermission exitVM.0)
您告诉虚拟机死亡,您无权执行此操作。如果你有,你会导致在该JVM实例上运行的任何其他东西也死掉,可能导致挂起/崩溃。
其次,您的代码在ClipboardTest.main()
方法失败,您尚未发布任何代码。
在代理属性中,有一个添加调试数据的选项。这将为您提供导致问题的确切行号。
我猜您在System.exit()
进行了ClipboardTest.main()
来电。它应该不存在。