While creating a minimal project to replicate the problem I found the error. Se3_F64 was a proper bean, but a class it referenced was not. Once that was fixed everything works. Should have created the minimal case first... Thanks.
- Peter On Wed, Jun 4, 2014 at 3:59 PM, Jörg Schaible <[email protected]> wrote: > Hi Peter, > > Peter A wrote: > > > I spoke too soon. The code in the previous message works in applications > > and applets as long as it doesn't encounter a class variable that's > > composed of a single letter name. If it does contain a class variable > > with a single letter then it will work as an application but throw the > > following > > exception inside an applet. This seems a bit quirky. I vaguely remember > > needing to modify JavaBeanConverter when i submitted that patch/hack a > > while ago. > > This has nothing to do with the JavaBeanConverter or with the name. You can > see from the stack trace, that georegression.struct.se.Se3_F64 was handled > by the ReflectionConverter ... which will *never* work in an untrusted > applet. It simply seems that georegression.struct.se.Se3_F64 is not a > JavaBean (resp. has no public default constructor). > > - Jörg > > > > > - Peter > > > > Exception in thread "Thread-1" > > com.thoughtworks.xstream.converters.ConversionException: access denied > > ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") : access > > denied ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") > > ---- Debugging information ---- > > message : access denied > ("java.lang.reflect.ReflectPermission" > > "suppressAccessChecks") > > cause-exception : java.security.AccessControlException > > cause-message : access denied > ("java.lang.reflect.ReflectPermission" > > "suppressAccessChecks") > > class : georegression.struct.se.Se3_F64 > > required-type : georegression.struct.se.Se3_F64 > > converter-type : > > com.thoughtworks.xstream.converters.javabean.JavaBeanConverter > > path : /boofcv.struct.calib.StereoParameters/rightToLeft/r > > line number : 31 > > class[1] : boofcv.struct.calib.StereoParameters > > version : not available > > ------------------------------- > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79) > > at > > > > com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) > > at > > > > com.thoughtworks.xstream.converters.javabean.JavaBeanConverter.unmarshal(JavaBeanConverter.java:134) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) > > at > > > > com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) > > at > > > > com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) > > at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185) > > at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1169) > > at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1040) > > at boofcv.io.UtilIO.loadXML(UtilIO.java:152) > > at > > > > boofcv.alg.geo.rectify.ShowRectifyCalibratedApp.changeInput(ShowRectifyCalibratedApp.java:154) > > at > > > > boofcv.gui.SelectAlgorithmAndInputPanel.performChangeInput(SelectAlgorithmAndInputPanel.java:326) > > at > > > > boofcv.gui.SelectAlgorithmAndInputPanel.access$200(SelectAlgorithmAndInputPanel.java:44) > > at > > > > boofcv.gui.SelectAlgorithmAndInputPanel$8.run(SelectAlgorithmAndInputPanel.java:300) > > Caused by: java.security.AccessControlException: access denied > > ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") > > at > > > > java.security.AccessControlContext.checkPermission(AccessControlContext.java:366) > > at > > java.security.AccessController.checkPermission(AccessController.java:560) > > at > java.lang.SecurityManager.checkPermission(SecurityManager.java:549) > > at > > > java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:128) > > at > > > > com.thoughtworks.xstream.converters.reflection.FieldDictionary.buildMap(FieldDictionary.java:148) > > at > > > > com.thoughtworks.xstream.converters.reflection.FieldDictionary.fieldOrNull(FieldDictionary.java:113) > > at > > > > com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.getFieldOrNull(PureJavaReflectionProvider.java:193) > > at > > > > com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.canAccess(AbstractReflectionConverter.java:61) > > at > > > > com.thoughtworks.xstream.converters.reflection.ReflectionConverter.canConvert(ReflectionConverter.java:41) > > at > > > > com.thoughtworks.xstream.core.DefaultConverterLookup.lookupConverterForType(DefaultConverterLookup.java:56) > > at > > > com.thoughtworks.xstream.XStream$1.lookupConverterForType(XStream.java:498) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:56) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) > > at > > > > com.thoughtworks.xstream.converters.javabean.JavaBeanConverter.unmarshal(JavaBeanConverter.java:134) > > at > > > > com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) > > ... 18 more > > > > > > On Wed, Jun 4, 2014 at 12:08 PM, Jörg Schaible > > <[email protected] > >> wrote: > > > >> Peter A wrote: > >> > >> > Ok here is what worked successfully inside an applet: > >> > > >> > ---------------------- BEGIN ---------------------------- > >> > XStream xstream = new XStream(new PureJavaReflectionProvider(),new > >> > XppDriver(), > >> > new > >> > ClassLoaderReference(UtilIO.class.getClassLoader())); > >> > xstream.registerConverter(new > >> > JavaBeanConverter(xstream.getMapper())); > >> > ----------------------- END ----------------------------- > >> > > >> > Where UtilIO is just a random class in my code. At one point I made > >> > the mistake of passing in Reader.class which caused weird class not > >> > found exceptions to be thrown. > >> > > >> > I would recommend adding that somewhere to the tutorial since the > >> > default > >> > doesn't work in Applets. Thanks again for the help! > >> > >> Actually the context classloader should do: > >> > >> Thread.currentThread().getContextClassloader(); > >> > >> Cheers, > >> Jörg > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe from this list, please visit: > >> > >> http://xircles.codehaus.org/manage_email > >> > >> > >> > > > > > > > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > > -- "Now, now my good man, this is no time for making enemies." — Voltaire (1694-1778), on his deathbed in response to a priest asking that he renounce Satan.
