gpt4 book ai didi

java - 错误 : java. security.AccessControlException:访问被拒绝

转载 作者:行者123 更新时间:2023-11-29 06:22:08 25 4
gpt4 key购买 nike

我必须使用用户名和密码连接到 https URL 才能读取文件。我无法连接到服务器(请参阅下面的错误日志)。我没有太多 Java 经验,所以我需要有关此代码的帮助。

import lotus.domino.*;
import java.net.*;
import java.io.*;
import javax.net.ssl.HttpsURLConnection;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
String username = "123";
String password = "456";
String input = username + ":" + password;
String encoding = new sun.misc.BASE64Encoder().encode (input.getBytes());

//Open the URL and read the text into a Buffer
String urlName = "https://server.org/Export.mvc/GetMeetings?modifiedSince=4/9/2010";
URL url = new URL(urlName);
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();

connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", String.valueOf (encoding.length()));
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setAllowUserInteraction(true);
connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.setRequestProperty("Cookie", "LocationCode=Geneva");

connection.connect();

BufferedReader rd = null;
try{
rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
} catch (IOException e) {
System.out.println("Read failed");
System.exit(-1);
}

String line;
while((line = rd.readLine()) != null) {
System.out.println(line.toString());
}
rd.close();

connection.disconnect();

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

异常抛出:

java.security.AccessControlException: Access denied (java.lang.RuntimePermission exitVM.-1)
at java.security.AccessController.checkPermission(AccessController.java:108)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
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:744)
at java.lang.Runtime.exit(Runtime.java:99)
at java.lang.System.exit(System.java:275)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)

最佳答案

旧线程,但我偶然发现了它,所以这是一个更新的答案。

答案在您的堆栈跟踪中。虽然它可能与 Domino 的使用有关,但这是一个普遍的问题,对于在从标准 Java 浏览器插件调用的普通 JVM 上使用的非常简单的小程序,很明显,您的 Java 代理正在使用小程序沙箱。

不允许小程序(除非直接修改客户端计算机上的 Java 安全策略)执行一些关键调用。即使使用签名的小程序。

在您的例子中,System.exit(-1) 触发了异常。这样做的原因是 applet 有一个相当复杂的生命周期,你不应该乱搞它。这是为您好,因为您希望浏览器能够为您与 applet 交互,并能够拆除(或重新使用)为运行 applet 而启动的 JVM 进程。通过调用 System.exit() 或其他方法,您会打乱这个生命周期以及您的浏览器控制 applet 销毁的机会。

您可能需要重新考虑为什么完全需要这个,因为您可能不需要在那里调用 System.exit()

关于java - 错误 : java. security.AccessControlException:访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com