Problema com JApplet

1 resposta
A

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.

1 Resposta

T

Toda vez que você recebe um erro desses, normalmente é o caso de assinar digitalmente sua applet.

Criado 25 de fevereiro de 2008
Ultima resposta 25 de fev. de 2008
Respostas 1
Participantes 2