java - 访问控制异常(java.net.SocketPermission 127.0.0.1 :8080 connect, 解析)

标签 java html applet permission-denied

我正在尝试使用小程序读取远程 pdf 文件。当我只从 IDE 运行小程序时它工作正常,但当我将它嵌入到 html 的对象标记中时它会抛出 SocketPermission 异常... 以下是访问小程序的html

<object type="application/x-java-applet" height="300" width="550">
        <param name="code" value="MyApplet" />
        <param name="archive" value="applet.jar" />
        <param name="filePath" value="https:path_to_pdf.pdf">
        Applet failed to run.  No Java plug-in was found.
    </object>

这就是我尝试在小程序中读取文件的方式

URL url;
url = new URL(pdfUrl);

InputStream in = null;
try {
    in = url.openStream();
} catch (IOException ex) {
    Logger.getLogger(MyApplet.class.getName()).log(Level.SEVERE, null, ex);
}

到目前为止已完成: 我已在 java 证书问题异常(exception)列表中添加了本地 url。 我还创建了策略文件来授予所有权限并放入主目录中...

这里是异常详细信息

Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied ("java.net.SocketPermission" "example.com:443" "connect,resolve")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:510)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1104)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:998)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1038)
at MyApplet.printPdf(MyApplet.java:162)
at MyApplet.actionPerformed(MyApplet.java:118)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

最佳答案

您正在本地计算机上运行该小程序。您不使用 https。您使用file://

file://path/to/your/pdf/file.pdf

关于java - 访问控制异常(java.net.SocketPermission 127.0.0.1 :8080 connect, 解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692029/

相关文章:

java - 使 TestNG @Factory 测试用例按照提供的相同顺序运行

java - 在java中如何判断我是否处于时间段的中间?

java - Zorba XQuery 更新工具直接修改 XML 文件

java - Web 浏览器搜索是如何实现的?

java - 使用 Java API 以 JSON 格式获取所有 Cassandra 查询结果

javascript - 提交表单到其他页面

html - 如何防止 NVDA 公布链接的全部内容?

java - Java 小程序加载失败时如何显示消息?

java - 我想在新窗口中单击java中的按钮来打开一个文件

java - java中的动画: paint() and repaint() or threads