Problema com Class Loader!

0 respostas
P

Olá pessoal! Meu problema é o seguinte, eu preciso carregar um Applet pela web que carrega outro Applet por um Link, Motivo? Proteção do arquivo Jar original, assim quem quiser pegar o meu Jar original teria que baixar o Loader, decompilar e pegar o link do original pela String, mas eu irei encriptar essa String também =D

Bem estou fazendo assim:
clientClassLoader = new URLClassLoader(new URL[] { new URL(jarURL) });
clientClass = clientClassLoader.loadClass(mainClass);
loader = (Applet) clientClass.newInstance();
loader.init();

Quando eu visualiso no Applet Viewer do Eclipse ele funciona perfeitamente!
Mas ao utilizar na web Após a introdução do Java, aparece uma tela dizendo : Error. Click for details.
Quando clico aparece o console apenas sem nada escrito só aquelas linhas normais.
PS: Eu ja dei um Sign no meu jar!
Alguém sabe se o java não permite esse tipo de código para funcionar na Web por motivo de segurança? Mas eu ja vi pessoas ultilizando ;/

Obrigado.

[img]http://i.imgur.com/SIeLL.png[/img]

Eu coloquei para inicializar em outra classe, ai desta outra classe ela chama a classe Loader e ai eu recebi este erro:
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getenv.nDec")
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.System.getenv(Unknown Source)
	at aN.a(Unknown Source)
	at client.a(Unknown Source)
	at aY.a(Unknown Source)
	at ap.<clinit>(Unknown Source)

Será que SecurityManager security = System.getSecurityManager(); Pode me ajudar? Tenho quase certesa que o problema é o SecurityMenager

Aqui Esta meu código(Funcional no Applet Viewer do Eclipse)
import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Panel;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class LoaderApplet extends Applet implements AppletStub {
	
	private final String JARURL = "http://realjar.tk";
	private final String MAINCLASS = "MyAppet";
	AppletStub stub;
	
	public void init() {
		stub = this;
		System.out.println("Initializing Thread");
		Thread pbThread = new Thread(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("Initializing WebLoader");
				/** Interface **/
				panel = new Panel();
				setBackground(Color.black);
				panel.setBackground(Color.black);
				setLayout(new BorderLayout());
				panel.setVisible(true);
				add(panel, BorderLayout.CENTER);
				/** Loader **/
				try {
					clientClassLoader = new URLClassLoader(new URL[] { new URL(JARURL) });
					clientClass = clientClassLoader.loadClass(MAINCLASS);
					loader = (Applet) clientClass.newInstance();
					loader.setStub(stub);
					panel.setLayout(new BorderLayout());
					panel.add(loader, BorderLayout.CENTER);
					loader.init();
				} catch (ClassNotFoundException e) {
					System.out.println("Class not found Error: " + e);
					e.printStackTrace();
				} catch (MalformedURLException e) {
					System.out.println("Url Error: " + e);
					e.printStackTrace();
				} catch (InstantiationException e) {
					System.out.println("Instantiation Error: " + e);
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					System.out.println("Ilegal acess Error: ");
					e.printStackTrace();
				}
				
			}
		});
		pbThread.setName("PbThread");
		pbThread.start();
	}
	
	Applet loader;
	ClassLoader clientClassLoader;
	Class<?> clientClass;
	Panel panel;
	
	@Override
	public void appletResize(int width, int height) {
		System.out.println("Resized: " + width);
		
	}
}
Criado 25 de outubro de 2011
Respostas 0
Participantes 1