在調用java.awt.image.RenderedImage的getWidth()方法時獲取java.security.AccessControlException類。在調用java.awt.image.RenderedImage的getWidth()方法時獲取java.security.AccessControlException類
代碼這是造成問題
new Dimension(this.image.getWidth(), this.image.getHeight())
在上面的代碼this.image是類型java.awt.image.RenderedImage類
完整棧跟蹤
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.com.sun.media.jai.util") 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.checkPackageAccess(Unknown Source) at sun.plugin2.applet.SecurityManagerHelper.checkPackageAccessHelper(Unknown Source) at sun.plugin2.applet.AWTAppletSecurityManager.checkPackageAccess(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at javax.media.jai.ScaleOpImage.layoutHelper(ScaleOpImage.java:228) at javax.media.jai.ScaleOpImage.(ScaleOpImage.java:437) at com.sun.media.jai.opimage.ScaleNearestBinaryOpImage.(ScaleNearestBinaryOpImage.java:77) at com.sun.media.jai.opimage.ScaleCRIF.create(ScaleCRIF.java:123) ... 33 more
注:
我已添加foll欠我的線到我的java.policy文件
permission java.lang.RuntimePermission "accessClassInPackage.*";
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.media.jai.opimage";
仍然沒有工作。有沒有人遇到過這個問題?我在JRE版本上運行的小程序1.8.0_45
UPDATE:
相同的代碼會如果再加上以下條目java.policy文件
permission java.util.PropertyPermission com.sun.media.imageio.disableCodecLib", "read";
*「我已經添加以下行到我的java.policy文件」 *政策文件是無用的,當談到部署,現在每個小應用程序都需要進行數字簽名,以便有機會在瀏覽器中啓動。因此,我建議將功能添加到構建中,以便對其進行簽名,然後從那裏開始(忽略策略文件)。 –
@Andrew Thompson非常感謝您的回覆。我正在使用的Applet版本是僅簽名的。 –
*「我正在使用的Applet版本是僅有簽名的。」*確保它在清單中聲明瞭「all-permissions」,然後策略文件是不相關的。 –