- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
2.8.1 : scala.swing.Action throws AccessControlException
Wed, 2011-01-19, 14:07
Hi,
while launching 'scala.swing.test.UIDemo' with Java Web Start on Scala
2.8.1 an AccessControlException is thrown when the 'Action("An action
item")' is constructed. Other Scala web apps using Actions throw an
identical exception, too.
UIDemo is compiled against Scala 2.8.0 and runs fine on Scala 2.8.0 as
well as on Scala 2.8.1 if the jars are signed. UIDemo can be launched
here:
http://www.interactivemesh.org/testspace/webstartscala/UIDemo_280.jnlp
http://www.interactivemesh.org/testspace/webstartscala/UIDemo_281.jnlp
Exception in thread "AWT-EventQueue-0"
java.security.AccessControlException:
access denied (java.lang.reflect.ReflectPermission
suppressAccessChecks)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.reflect.AccessibleObject.setAccessible(Unknown Source)
at
scala.swing.Action$Trigger$Wrapper$class.reflMethod$Method1(Action.scala:38)
at
scala.swing.Action$Trigger$Wrapper$class.action_$eq(Action.scala:38)
at scala.swing.AbstractButton.action_$eq(AbstractButton.scala:22)
at scala.swing.MenuItem.(Menu.scala:44)
at
scala.swing.test.UIDemo$$anon$8$$anon$9$$anon$1.(UIDemo.scala:20)
at scala.swing.test.UIDemo$$anon$8$$anon$9.(UIDemo.scala:18)
at scala.swing.test.UIDemo$$anon$8.(UIDemo.scala:17)
at scala.swing.test.UIDemo$.top(UIDemo.scala:10)
at scala.swing.test.UIDemo$.top(UIDemo.scala:9)
at
scala.swing.SimpleSwingApplication.startup(SimpleSwingApplication.scala:7)
at
scala.swing.SwingApplication$$anonfun$main$1.apply$mcV$sp(SwingApplication.scala:4)
at scala.swing.Swing$$anon$10.run(Swing.scala:31)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Are Actions now limited to signed applications/applets? Are other Scala
Swing classes affected as well?
August
Wed, 2011-01-19, 15:07
#2
Re: 2.8.1 : scala.swing.Action throws AccessControlException
>>>>> "Ingo" == Ingo Maier writes:
Ingo> I guess that's because Action uses structural types now, which
Ingo> use reflection under the hood, as you can see from the stack
Ingo> trace. So the answer would be that any Scala app that uses
Ingo> structural types is restricted to signed apps, unless there is
Ingo> another way to get permission to perform reflection.
The relevant ticket is
https://lampsvn.epfl.ch/trac/scala/ticket/2318 . The ticket was reopened
a couple months ago, but I don't know if anyone is working on it.
I guess that's because Action uses structural types now, which use
reflection under the hood, as you can see from the stack trace. So the
answer would be that any Scala app that uses structural types is
restricted to signed apps, unless there is another way to get
permission to perform reflection.
Cheers,
Ingo
On 1/19/11 2:07 PM, August Lammersdorf wrote:
>
> Hi,
>
> while launching 'scala.swing.test.UIDemo' with Java Web Start on Scala
> 2.8.1 an AccessControlException is thrown when the 'Action("An action
> item")' is constructed. Other Scala web apps using Actions throw an
> identical exception, too.
>
> UIDemo is compiled against Scala 2.8.0 and runs fine on Scala 2.8.0 as
> well as on Scala 2.8.1 if the jars are signed. UIDemo can be launched here:
>
> http://www.interactivemesh.org/testspace/webstartscala/UIDemo_280.jnlp
> http://www.interactivemesh.org/testspace/webstartscala/UIDemo_281.jnlp
>
> Exception in thread "AWT-EventQueue-0"
> java.security.AccessControlException:
> access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
>
> at java.security.AccessControlContext.checkPermission(Unknown Source)
> at java.security.AccessController.checkPermission(Unknown Source)
> at java.lang.SecurityManager.checkPermission(Unknown Source)
> at java.lang.reflect.AccessibleObject.setAccessible(Unknown Source)
>
> at
> scala.swing.Action$Trigger$Wrapper$class.reflMethod$Method1(Action.scala:38)
>
> at scala.swing.Action$Trigger$Wrapper$class.action_$eq(Action.scala:38)
> at scala.swing.AbstractButton.action_$eq(AbstractButton.scala:22)
> at scala.swing.MenuItem.(Menu.scala:44)
>
> at scala.swing.test.UIDemo$$anon$8$$anon$9$$anon$1.(UIDemo.scala:20)
> at scala.swing.test.UIDemo$$anon$8$$anon$9.(UIDemo.scala:18)
> at scala.swing.test.UIDemo$$anon$8.(UIDemo.scala:17)
> at scala.swing.test.UIDemo$.top(UIDemo.scala:10)
> at scala.swing.test.UIDemo$.top(UIDemo.scala:9)
> at
> scala.swing.SimpleSwingApplication.startup(SimpleSwingApplication.scala:7)
> at
> scala.swing.SwingApplication$$anonfun$main$1.apply$mcV$sp(SwingApplication.scala:4)
>
> at scala.swing.Swing$$anon$10.run(Swing.scala:31)
> at java.awt.event.InvocationEvent.dispatch(Unknown Source)
> at java.awt.EventQueue.dispatchEvent(Unknown Source)
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.run(Unknown Source)
>
> Are Actions now limited to signed applications/applets? Are other Scala
> Swing classes affected as well?
>
> August
>