Supportnet / Forum / Anwendungen(Java,C++...)
Java: Textfile (ohne Kommentare) nach String durchsuchen
Frage
Hallo!
Ich möchte herausfinden, ob eine Klasse eine bestimmte Methode beinhaltet.
Ich peil irgendwie nicht wie ich das am besten mache...
Könnte mir evt jmd eine Hilfestellung geben? Ein Beispiel oder eine kurzer Ablauf des zu implementierenden Codes würde mir sehr weiterhelfen.
Die Daten welche ich von der zu durchsuchenden Klasse habe sind Name und Pfad der Klasse.
Wäre wirklich sehr dankbar, ich muss das für meine Abschlussarbeit machen :-/
Schönes Wochenende euch allen
Tinella
Antwort 1 von cmkatz
Hallo,
kuck dir mal in der Java API die Klassen FileInputStream und BufferedReader an, vielleicht hilft dir das ja schon weiter.
Und für Java-Fragen bevorzuge ich ein anderes Forum: www.java-forum.org
(ich hoffe, ich verstoß jetzt nocht gegen irgendwelche Bestimmungen!)
Gruß
cmkatz
kuck dir mal in der Java API die Klassen FileInputStream und BufferedReader an, vielleicht hilft dir das ja schon weiter.
Und für Java-Fragen bevorzuge ich ein anderes Forum: www.java-forum.org
(ich hoffe, ich verstoß jetzt nocht gegen irgendwelche Bestimmungen!)
Gruß
cmkatz
Antwort 2 von mr_x_hacker
Hi!
Sollst Du Sourcecode (*.java) oder Bytecode (*.class) durchsuchen?
Im letzteren Fall solltest Du Dir eher das Zeug in java.lang.reflect angucken... und vielleicht mal genauer beschreiben, was das Ziel dieser Aktion ist, denn "Klasse nach Methode durchsuchen" ist irgendwie seltsam... leg ein Objekt der Klasse an, und ruf die Methode auf - wenn es compiliert, ist sie da :-)
Ciao Sascha
Sollst Du Sourcecode (*.java) oder Bytecode (*.class) durchsuchen?
Im letzteren Fall solltest Du Dir eher das Zeug in java.lang.reflect angucken... und vielleicht mal genauer beschreiben, was das Ziel dieser Aktion ist, denn "Klasse nach Methode durchsuchen" ist irgendwie seltsam... leg ein Objekt der Klasse an, und ruf die Methode auf - wenn es compiliert, ist sie da :-)
Ciao Sascha
Antwort 3 von Tinella
Danke für eure Antworten
Also ich muss in meinem Programm den Directorypfad und einen Methodennamen eingeben können.
Dann sucht das Prog sämtliche Verzeichnisse nach Jarfiles. Die Jarfiles werden entpackt, daraus ergeben sich Klassen.
Ich möchte nun wissen, ob in einer der entpackten Klasse meine Methode vorkommt!
Es ist mir absolut unklar wie ich das bewerkstelligen soll :-/
Danke für Hilfe..
Also ich muss in meinem Programm den Directorypfad und einen Methodennamen eingeben können.
Dann sucht das Prog sämtliche Verzeichnisse nach Jarfiles. Die Jarfiles werden entpackt, daraus ergeben sich Klassen.
Ich möchte nun wissen, ob in einer der entpackten Klasse meine Methode vorkommt!
Es ist mir absolut unklar wie ich das bewerkstelligen soll :-/
Danke für Hilfe..
Antwort 4 von mr_x_hacker
Hmm... irgendwie hab ich vor 3 Wochen sowas ähnliches gemacht :-)
Also mal paar Code-Fragmente...
Eigenen Classloader schreiben:
Datei (*.class) einlesen
Klasse laden
Reflection
Hast Du etwa sowas gemeint?
Ciao Sascha
Also mal paar Code-Fragmente...
Eigenen Classloader schreiben:
class MyClassLoader extends ClassLoader {
public Class defineMyClass(byte[ ] b, int off, int len) {
return super.defineClass(b, off, len);
}
}
Datei (*.class) einlesen
public byte[ ] loadFile(String s) throws Exception {
File f = new File(s);
FileInputStream fis = new FileInputStream(f);
byte[ ] b = new byte[(int)f.length()];
fis.read(b);
fis.close();
return b;
}
Klasse laden
byte[ ] b = loadFile("Pfad zur Klasse");
MyClassLoader mcl = new MyClassLoader();
Class c = mcl.defineMyClass(b, 0, b.length);
Reflection
Method[ ] m = c.getDeclaredMethods();
for(...) if(m[i ].getName().equals("Gesuchte Methode")) {...};
Hast Du etwa sowas gemeint?
Ciao Sascha

