3rd 方库中的 java applet AccessControlException

标签 java applet

我在 java 小程序中使用第 3 方库 (jar),但收到此错误:

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "*" "read,write")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertiesAccess(Unknown Source)
    at java.lang.System.getProperties(Unknown Source)
    at sfs2x.client.core.sockets.TCPSocketLayer.initNetty(TCPSocketLayer.java:63)
    at sfs2x.client.core.sockets.TCPSocketLayer.<init>(TCPSocketLayer.java:59)
    at sfs2x.client.bitswarm.BitSwarmClient.init(BitSwarmClient.java:90)
    at sfs2x.client.SmartFox.initialize(SmartFox.java:148)
    at sfs2x.client.SmartFox.<init>(SmartFox.java:127)
    at bfwd.RedemptionOnline.Client.RedemptionOnlineApplet.init(RedemptionOnlineApplet.java:29)
    at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我正在我的开发服务器上测试它并尝试连接到本地主机。为什么我现在会收到此错误?将来如何防止它发生?

好吧,我什至对我的 jar 进行了自签名,但它仍然出现此错误。

最佳答案

at sfs2x.client.core.sockets.TCPSocketLayer.initNetty(TCPSocketLayer.java:63)

SFS2X好像是游戏服务器。 Netty是一个 TCP/IP 服务器。为什么要尝试在客户端运行游戏服务器?我不确定您的网页访问者是否会对此感到满意。功能需求到底是什么?您是否考虑过让您的网络服务器来完成这项工作?

无论如何,您需要sign小程序才能使其正常工作。未签名的小程序具有非常严格的安全规则(例如,否则很容易窃取整个“我的文档”并将其发送到服务器)。基本上,您需要将代码发送给一些 RSA 签名公司,让他们审查代码并获取您随小程序一起提供的一些 RSA 证书,以便客户知道它是受信任的软件。

您还可以使用有效期仅为 6 个月的自制证书来签署您的小程序。但当你的小程序被加载时,最终用户仍然会收到安全警告;要求最终用户确认这是否确实是受信任的软件并且可以执行。然而,您仍然需要将小程序主 init() 包装在 AccessController#doPrivileged() 中。 。

public void init() {
    AccessController.doPrivileged(new PrivilegedAction<Void>() {
        @Override public Void run() {
            // Put your original init() here.
        }
    });
}

关于3rd 方库中的 java applet AccessControlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7288991/

相关文章:

java - 由于某种原因, paint() 被调用了两次

java - 获取图表以随屏幕自动调整

javascript - 如何使用JavaScript变量设置小程序的param标签值?

java - 如何从类中绘制形状到小程序?

java - blob sql 类型的 Hibernate 验证问题

java - Android OpenCV HoughLinesP 崩溃

java - 需要一些有关包装类模式的帮助

使用下一代插件的 java 小程序

java - 在本地和全局使用异常映射来处理相同的异常 - 哪一个具有高优先级

java - 在 java 的多个方法中使用的数组副本