Ir para conteúdo
  • 0

[Resolvido] URLClassLoader


Guest GamesTdai :D

Pergunta

Guest GamesTdai :D

Bom queria saber se com URLClassLoader tem como executar um arquivo .Class, eu ja fiz o teste e com .jar na web ele baixa e executa a classe de boas dentro da jar, mas nao tem como ser um arquivo .Class para ele executar ?

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

Bom queria saber se com URLClassLoader tem como executar um arquivo .Class, eu ja fiz o teste e com .jar na web ele baixa e executa a classe de boas dentro da jar, mas nao tem como ser um arquivo .Class para ele executar ?

 

tenta assim

	  URL classe;
  	classe = new URL("fill//arquivo.class");
  	URL[] classes = { classe };
  	URLClassLoader urlClasse = new URLClassLoader(classes);
  	Class c = urlClasse.loadClass("classe");
Editado por Karamujo
Link para o comentário
Compartilhar em outros sites

Guest GamesTdai :D

 

tenta assim

	  URL classe;
  	classe = new URL("fill//arquivo.class");
  	URL[] classes = { classe };
  	URLClassLoader urlClasse = new URLClassLoader(classes);
  	Class c = urlClasse.loadClass("classe");

Vlw, Vou Testar Aqui

Link para o comentário
Compartilhar em outros sites

Serioooooo? isso eu sei cara, mas nao vai mudar nada de um pro outro

Perguntou a diferença negro, uhuh, não muda bosta nenhuma, só muda o formato mesmo :c.

 

@Off

Sabe como faz para pegar Pelo URLClassLoader digamos assim, na class que carregamos tem

 

 

public boolean test(int i){

if(i < 10){

return true;

}

return false;

}

 

Como faz para Pegar Pelo UrlClassLoader o test(int), já tentei só que sempre da erro e pá, tentei Usando Method(parametros com Integer.class), e depois Invoke, ai fiquei @%&#036;#~&amp;I com o erro e fechei :c

Editado por kaway
Link para o comentário
Compartilhar em outros sites

Perguntou a diferença negro, uhuh, não muda bosta nenhuma, só muda o formato mesmo :c.

 

@Off

Sabe como faz para pegar Pelo URLClassLoader digamos assim, na class que carregamos tem

 

 

public boolean test(int i){

if(i < 10){

return true;

}

return false;

}

 

Como faz para Pegar Pelo UrlClassLoader o test(int), já tentei só que sempre da erro e pá, tentei Usando Method(parametros com Integer.class), e depois Invoke, ai fiquei @%&#036;#~&amp;I com o erro e fechei :c

Claro q da, Tu ta fazendo alguma coisa errada...

Link para o comentário
Compartilhar em outros sites

blkz

Vortei, Fiquei comendo la e pá, desculpa demora.

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {
	
	public static void main(String[] args){
		
		try {
			URL url[] = {new URL("URL JAR AQUI")};
			URLClassLoader urlclassloeaded = new URLClassLoader(url);
			Class<?> c = urlclassloeaded.loadClass("CLASS AQUI");
			Method m = c.getMethod("test");
            Method mm = c.getMethod("test2", Integer.class);
			//Object obj = c.newInstance();
			//m.setAccessible(true);
            
			//String r = (String)m.invoke(obj);
			String rr = (String)m.invoke(null);
            String rrr = (String)m.invoke;
			System.out.println("Valor retornado = " + rr);//or r
			urlclassloeaded.close();
 		} catch (Exception e) {
 			e.printStackTrace();
		}
		
	}
}
Link para o comentário
Compartilhar em outros sites

 

Vortei, Fiquei comendo la e pá, desculpa demora.

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {
	
	public static void main(String[] args){
		
		try {
			URL url[] = {new URL("URL JAR AQUI")};
			URLClassLoader urlclassloeaded = new URLClassLoader(url);
			Class<?> c = urlclassloeaded.loadClass("CLASS AQUI");
			Method m = c.getMethod("test");
            Method mm = c.getMethod("test2", Integer.class);
			//Object obj = c.newInstance();
			//m.setAccessible(true);
            
			//String r = (String)m.invoke(obj);
			String rr = (String)m.invoke(null);
            String rrr = (String)m.invoke;
			System.out.println("Valor retornado = " + rr);//or r
			urlclassloeaded.close();
 		} catch (Exception e) {
 			e.printStackTrace();
		}
		
	}
}

Já vi uma porrada de erro... ta invocando método errado, e um método nao estatico precisa de uma instancia.

Link para o comentário
Compartilhar em outros sites

Já vi uma porrada de erro... ta invocando método errado, e um método nao estatico precisa de uma instancia.

'-', Como ficaria?

 

@Edit

Mais se eu corrigir e fazer a instancia, o método de invoke vai funcionar? Eu não lembro onde vi, acho que foi em uma apostila que era deste meio, ai fui lembrando, só não lembro como colocar os argumentos no parametros, ele funciona somente se a função tiver retorno,

 

public String get()

{

return "negros";

}

Editado por kaway
Link para o comentário
Compartilhar em outros sites

'-', Como ficaria?

 

@Edit

Mais se eu corrigir e fazer a instancia, o método de invoke vai funcionar? Eu não lembro onde vi, acho que foi em uma apostila que era deste meio, ai fui lembrando, só não lembro como colocar os argumentos no parametros, ele funciona somente se a função tiver retorno,

 

public String get()

{

return "negros";

}

 

 

Object instancia = classe.getConstructor().newInstance();

 

Method methodGet = classe.getDeclaredMethod("get");

 

String negro = (String)methodGet.invoke(instancia);

 

+- assim, fiz ak msm 

Link para o comentário
Compartilhar em outros sites

Object instancia = classe.getConstructor().newInstance();

 

Method methodGet = classe.getDeclaredMethod("get");

 

String negro = (String)methodGet.invoke(instancia);

 

+- assim, fiz ak msm 

Já fiz, não funcionou também, por isso falei, eu li que este método não precisaria utilizar Object a instancia, porém, tentei utilizar classe.getMethod, tentei o getDeclaredMethod sem instancia mesmo.

Link para o comentário
Compartilhar em outros sites

Guest GamesTdai :D

Já fiz, não funcionou também, por isso falei, eu li que este método não precisaria utilizar Object a instancia, porém, tentei utilizar classe.getMethod, tentei o getDeclaredMethod sem instancia mesmo.

Class<?> testeClass = localURLClassLoader.loadClass("Classe");
Object li = testeClass.newInstance();
Method m = testeClass.getMethod("test");
String str = (String)m.invoke(li);

eu uso assim a funciona de boas.

Link para o comentário
Compartilhar em outros sites

Guest GamesTdai :D

Eu sei cara, mas não tem diferença de tu executar a classe em um jar ou sozinha.

Fala isso para o ClassLoader que nao quer carregar a minha via site

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...