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

  Em 15/08/2015 em 19:47, TowersCraft disse:

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
  Em 15/08/2015 em 21:32, Karamujo disse:

 

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

  Em 16/08/2015 em 01:44, Comprar Alimento disse:

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

  Em 16/08/2015 em 01:47, kaway disse:

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

  Em 16/08/2015 em 01:49, Comprar Alimento disse:

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

Da um Erro, que não lembro qual é, vou pegar a src no outro pc e te mostro como tentei e o erro que da, pelo menos comigo não funcionou.

Link para o comentário
Compartilhar em outros sites

  Em 16/08/2015 em 01:54, Comprar Alimento disse:

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

  Em 16/08/2015 em 02:12, kaway disse:

 

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

  Em 16/08/2015 em 02:24, Comprar Alimento disse:

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

  Em 16/08/2015 em 02:27, kaway disse:

'-', 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

  Em 16/08/2015 em 02:33, Comprar Alimento disse:

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
  Em 16/08/2015 em 02:36, kaway disse:

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
  Em 20/08/2015 em 02:45, leonardosc disse:

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...