我有一个用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();
}
}}
我具有数据库管理员权限。是什么导致此错误?
首先看一下错误实际上是什么:
Access denied (java.lang.RuntimePermission exitVM.0)
您正在告诉虚拟机死机,而您无权这样做。如果有的话,您还将导致在该JVM实例上运行的其他所有对象也都死掉,可能导致挂起/崩溃。
其次,您的代码在ClipboardTest.main()
方法中失败,该方法尚未发布任何代码。
在代理属性中,有一个添加调试数据的选项。这将为您提供引起问题的确切行号。
我的猜测是您System.exit()
打来的电话ClipboardTest.main()
。它不应该在那里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句