Pb de classloader [recuperer l'exec. dune class...] [Résolu]

Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 26 juil. 2004 à 18:15 - Dernière réponse : wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention
- 27 juil. 2004 à 15:33
Bonjour je cherche a recuperer le resultat de l'execution d'une class mais a mon grand malheur je galère .. la seule methode bien ki ma paru fesable c de faire

package fr.package;

public class Parameter {
public static Object getParameter() throws IOException {
int i=60;
InputStream par= ClassLoader.getSystemResourceAsStream("fr.package.testjob()");

while(par==null){
InputStream par2 = (InputStream) getStream();
//System.out.println(par2);
i++;
if(i==160){
return "true";//voir si des fois par != null
}
par=par2;
}
BufferedReader in = new BufferedReader(new InputStreamReader(par));

String str="null";

while (in.readLine()!=null){
//si qqchose a lire continue
str = in.readLine();
//alors li et met dans la String
}
return str;
}
public static Object getStream() throws IOException{
InputStream par= ClassLoader.getSystemResourceAsStream("fr.package.testjob()");
return par;
}
public static void main(String[] args) {
}
}

voila la methode"getParameter" qui permet de recuperer le resultat de la class testjobs mais la elle me revoit un resultat null... qqun sait pk??

le reste sert a la ocnvertir en string et a verifier si par est null ou pas....

Merci de votre aide

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Afficher la suite 

15 réponses

Répondre au sujet
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 15:33
+3
Utile
Si t'as encore des questions, creer un nouveau topic je commence a m'y perdre.

Le fait est qu'il faut faire :
runtime.exec("java fr.package.testjob"); et pas fr.package.testjob()

si tu veut utiliser l'autre solution : fr.package.testjob.Main({"myarg"});

le process te renvoie des Stream: tu peut les surcharger en printwriter bufferedReader pour recuperer des strings...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de wargre
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 09:09
0
Utile
c'est ClassLoader.getSystemResourceAsStream("javax/swing/JFrame.class");

qu'il faut utiliser si tu veut obtenir la classe JFrame par exemple. (la classe doit etre dans le classpath)

Qu'est ce que tu veux faire avec?
Commenter la réponse de wargre
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 09:11
0
Utile
Au fait si tu veut modifier le bytecode il existe deja des librairies comme bcel ...
Commenter la réponse de wargre
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 10:13
0
Utile
non je veut juste recuperer le resultat le al compilation je sais le faire mais ca devrait pas renvoyer une string au final jai un int....

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 10:37
0
Utile
????????

non je veut juste recuperer le resultat le al compilation je sais le faire mais ca devrait pas renvoyer une string au final jai un int...

explique toi ....
Commenter la réponse de wargre
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 10:40
0
Utile
sinon au dehors du java, tu peus ouvrir le .class directement (ou le copier pour l'utiliser comme un fichier ordinaire)
Commenter la réponse de wargre
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 10:49
0
Utile
autant pour moi je dois recuperer le resultat de l'execution...
www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 12:07
0
Utile
la t'utilise les reflects alors (truc.getClass().getDeclaredMethod("methode").invoke("arg"))
Commenter la réponse de wargre
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 12:26
0
Utile
vi ... mais truc.getClass().getDeclaredMethod("methode").invoke("arg"))
ca renvoi pas un PrintStream par hasard??

pis att ca sert a quoi a recuperer la methode qui permet de recuperer le resultat????

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 12:30
0
Utile
ptain la je vais sortir ma sciences du francais....
"autant pour moi" ca veut rien dire en realité c'est
"Au temps pour moi" :)))

par contre je comprend vraiment pas ce que tu cherches a faire....
pq recuperer le code compilé.... alors que l'on peut le faire par un acces fichier...
Commenter la réponse de wargre
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 13:18
0
Utile
MAIS JE VEUT PAS DU CODE COMPILE!!!!!!!!!!!!

JE VEUT LE RESULTAT DE L'EXECUTION C PAS DU CODE!!!!!!!!!

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
wargre 649 Messages postés mardi 8 juin 2004Date d'inscription 9 septembre 2004 Dernière intervention - 27 juil. 2004 à 13:59
0
Utile
ahhhhhhhhhhhhhh

soit tu fais mumuse avec le runtime

Process p=Runtime.getRuntime().exec(machin);

p.getOutputStream() => le input de ton executable
p.getErrorStream() => Stream d'erreur
p.getInputStream() => resultat normal du fichier

ou tu utilises

System.setOut(...) System.setIn()....
puis taClass.Main(argc);

et tu recupere les sorties
Commenter la réponse de wargre
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 14:18
0
Utile
c quoi le mieux ca renvoi des string ca???

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 15:04
0
Utile
euh ui ca marche presque sauf que la ca me revoi une erreur 500:
java.io.IOException: CreateProcess: fr.package.testjob() error=2
java.lang.Win32Process.create(Native Method)
java.lang.Win32Process.(Win32Process.java:66)
java.lang.Runtime.execInternal(Native Method)[....]
at java.lang.Thread.run(Thread.java:534)

qqun sait a quoi ca correspond??

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis
Syruis 184 Messages postés mardi 8 juin 2004Date d'inscription 28 avril 2009 Dernière intervention - 27 juil. 2004 à 15:15
0
Utile
ya 2 raison a mon pb je pense il creer un process deja creer ... ou mon process na pas les bonnes propriétés...

HELP!

www.crisenouilleenforce.fr.vu
le secret de la vie n'est pas de faire ce que l'on aime mais d'aimer ce que l'on fait ....

Syruis :)
Commenter la réponse de Syruis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.