我在我的java applet中使用了第三方库(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)
我正在我的开发服务器上测试它并尝试连接到localhost。为什么我现在会收到此错误,以后如何阻止它呢?
好吧,我甚至自我签了我的jar,但它仍然出现了这个错误。
答案 0 :(得分:0)
at sfs2x.client.core.sockets.TCPSocketLayer.initNetty(TCPSocketLayer.java:63)
SFS2X似乎是游戏服务器。 Netty是TCP / IP服务器。你为什么试图在客户端运行游戏服务器?我不确定您的网页访问者是否会对此感到满意。毕竟功能要求是什么?您是否考虑过让您的网络服务器完成这项工作?
无论如何,您需要sign小程序才能使其正常运行。未签名的applet具有非常严格的安全规则(否则,很容易将整个“我的文档”放下并将其发送到服务器,例如)。基本上,您需要将代码发送给某个RSA签名公司,让他们查看代码并获取您在applet中提供的一些RSA证书,以便客户知道它是可信软件。
您还可以使用自制证书对您的小程序进行签名,该证书仅有效期为6个月。但是当你的applet被加载时,最终用户仍会收到安全警告;如果这是真正受信任的软件并且可以执行,则要求最终用户确认。但是,您仍然需要将applet main init()
包装在AccessController#doPrivileged()
中。
public void init() {
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@Override public Void run() {
// Put your original init() here.
}
});
}