让 java.policy.applet 在 Eclipse 之外工作
Posted
技术标签:
【中文标题】让 java.policy.applet 在 Eclipse 之外工作【英文标题】:Getting java.policy.applet working outside of eclipse 【发布时间】:2012-01-13 21:43:21 【问题描述】:这应该是一个相对简单的修复,但我找不到如何让它工作。我创建了一个 java 小程序,它在 eclipse 中运行时效果很好,不幸的是我无法让它在 eclipse 之外运行。这是错误的重要部分:
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission background.jpg read)
我发现这似乎与政策有关,但我猜我对它的理解还不够好,无法让它发挥作用。如果我将带有 applet 标记的 html 文件放在 eclipse bin 文件夹中,那么它工作得很好,但是如果我将该文件夹中的所有内容(包括 java.policy.applet 文件)复制到另一个文件夹,则会出现上述错误。
我花了几个小时试图解决这个问题,请帮助!如果我可以告诉程序该文件在哪里,因为它似乎完全忽略了它。这是 eclipse 自动生成的策略文件:
/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
/* DO NOT EDIT */
grant
permission java.security.AllPermission;
;
【问题讨论】:
你能贴一段代码,你在哪里做文件操作(打开图像文件)? 这个background.jpg
在编译Java包???
【参考方案1】:
要指定策略文件的位置,请使用:
appletviewer -J-Djava.security.policy=file:///path/to/policy/file HTMLfile
【讨论】:
【参考方案2】:我在为比利时电子身份证开发小程序时遇到了同样的问题。我的解决方案是创建一个自签名 JAR。我正在研究如何直接在 Eclipse 中执行此操作。 确保您的 jdk 在您的路径中(以便您可以访问以下工具),然后:
keytool -genkey -keystore yourKeyStoreFile -alias toto keytool -selfcert -keystore yourKeyStoreFile -alias toto这两个命令创建密钥和自签名证书,并且只需要执行一次。然后,要实际签署 jar,请使用:
jarsigner -keystore yourKeyStore jarfile.jar toto希望这会有所帮助...
【讨论】:
以上是关于让 java.policy.applet 在 Eclipse 之外工作的主要内容,如果未能解决你的问题,请参考以下文章
如何让 AWS ECS 自动将我的容器的端口映射到主机(EC2)