Olá Pessoal.
tenho a seguinte situação:
tenho uma JApplet que atravez de um parametro recebe uma string que representa um Array de bytes, e apartir desta String tenho que recriar o array de bytes e desserializar o Objeto, neste caso um ChartPanel.
O erro ocorre no momento de desserializar o ChartPanel:
/**
* Desserializa um chartPanel a partir de uma string que corresponde a um array de bytes.
* o padrão da String será: <b>byte_byte_byte_</b>. */
public static JPanel desserializar(String array_bytes) throws IOException, ClassNotFoundException {
String [] sbytes = array_bytes.split("_");
byte [] bytes = new byte[ sbytes.length ];
for(int i = 0 ; i < sbytes.length ; i++) {
long b = Byte.parseByte( sbytes[i] );
bytes[i] = (byte) b;
}
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( bytes );
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
System.out.println( array_bytes );
return (JPanel) objectInputStream.readObject();
}
Da o seguinte erro:
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.swing)
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.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.io.ObjectInputStream.resolveClass(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.defaultReadObject(Unknown Source)
at java.awt.Component.readObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at org.teste.chart.GenericAppletGrafico.desserializar(GenericAppletGrafico.java:99)
at org.teste.chart.GenericAppletGrafico.getChartPanel(GenericAppletGrafico.java:33)
at org.teste.chart.GenericAppletGrafico.init(GenericAppletGrafico.java:22)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ah e detalhe, testando apartir do Eclipse ele funcionar certinho.
Grato a todos.