Class File zur Laufzeit laden ohne den Binary Name zu kennen

Status
Nicht offen für weitere Antworten.
Hallo,

habe folgendes Problem: Eine Anwendung bekommt ein Ordner in Form eines File Objektes übergeben in dem sich eine Java Anwendung befindet. Es ist nicht bekannt wie die Klasse heisst in der sich die Main methode befindet und wie die Packagestruktur aussieht.
Mithilfe eines Class Objektes könnte ich ja herausfinden ob sich eine Main Methode darin verbirgt. Aber wie komme ich zur Laufzeit an ein Class Objekt von einem class - File ran ohne den Binary name zu kennen? Vielen Dank und MFG!
 

Leroy42

Top Contributor
1. Erstell dir einen ClassLoader, der aus diesem Ordner class-files laden kann.
2. Durchlaufe den Ordner um die vorhanden ".class" Dateien aufzulisten.
3. Lade jede dieser Klassen mit deinem ClassLoader via classByName
4. Bestimme über reflection of die jeweilige Klasse ein static void main(String[] args) besitzt.
5. Rufe die main-Funktion dieser Klasse auf.
6. Vergiß den ganzen Blödsinn und denke dir eine vernünftigere Struktur aus.

:cool:
 
Leroy42 hat gesagt.:
6. Vergiß den ganzen Blödsinn und denke dir eine vernünftigere Struktur aus.

Na das ist ja dann sehr hilfreich! Wenn Du denkst das es Blödsinn ist, was wäre denn dann ne bessere Lösung? Davon abbgesehn. Wie kann ich denn mit nem ClassLoader die Klasse laden wenn ich den binary name nicht kenne?
 

Leroy42

Top Contributor
Leroy42 hat gesagt.:
2. Durchlaufe den Ordner um die vorhanden ".class" Dateien aufzulisten.
3. Lade jede dieser Klassen mit deinem ClassLoader via classByName

Durch 2 erhälst du doch den Namen der Klasse.
Was überhaupt verstehst du unter binary name :shock:

Was die bessere Lösung betrifft, hängt davon ab, was du überhaupt erreichen willst.
Ich kann mir keine Anwendung vorstellen, die soetwas benötigt. Du weißt also weder
von vorneherein, wie die Main-Klassen heißen die du starten willst? Ok, kann vorkommen
aber woher bekommst du denn diesen Ordner? Kann die Anwendung, die diesen
Ordner erstellt denn nicht, beispielsweise, eine Textdatei mit dem Namen der Main-Klasse
in den Ordner erstellen?

Oder willst du einfach mal so deine Platte durchlaufen und alle Java-Programme starten?
Na dann viel Spaß :shock:
 

mic_checker

Top Contributor
Unabhängig davon wie viel sinn es nun macht oder nicht: Ich denke der prinzipielle mechanismus ist klar, über Reflection sollte sich das ganze lösen lassen.
Leroy hat das Prinzip ja schon beschrieben, wenn du den Namen der Datei nicht kennst, such halt nach der main. Ansonsten such nach nem Mechanismus den Namen im Ordner bekannt zu machen etc..

Also wo ist noch das Problem? Wenn du konkrete Fragen zur Reflection API hast, kannst du diese ja posten.
 
Das ich mit Punkt 2 den Klassennamen erhalte ist richtig, aber der hilft mir nicht sonderlich weiter. Ich benötige doch zum laden mit dem URLClassLoader den Namen in der Form Packagename.[Packagename].Klassenname. Für die Klasse String wäre das z.B. java.lang.String. Das ist der Binary name. Siehe auch Java Doku unter ClassLoader. Oder gibt es einen ClassLoader der eine Klasse anhand eines Klassennamen findet?
 

Leroy42

Top Contributor
ActionListener hat gesagt.:
Oder gibt es einen ClassLoader der eine Klasse anhand eines Klassennamen findet?
Leroy42 hat gesagt.:
1. Erstell dir einen ClassLoader, der aus diesem Ordner class-files laden kann.

Und sorry @ actionListener.

Es gibt tatsächlich den Begriff binary name :oops:

War mir nur nicht geläufig und finde ich auch etwas merkwürdig, denn java.lang.String ist
ja nicht nur der Name des Binary an sich.
 

mic_checker

Top Contributor
ich denke du kannst auch einfach forName benutzen und vorher den Ordner etc. zum Klassenpfad hinzufügen, sollte eine Möglichkeit sein...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
S Class File Editor -> Source not found Allgemeine Java-Themen 4
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
S Bad version number in .class file Allgemeine Java-Themen 5
T class file(s) on classpath not found or not accessible Allgemeine Java-Themen 8
H Package name aus Class-File auslesen Allgemeine Java-Themen 11
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
J Class.forName und CLASSPATH -Problem Allgemeine Java-Themen 5
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
G Thread in Methode oder in inner class Allgemeine Java-Themen 3
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
reibi Main-Class in Jarfile Allgemeine Java-Themen 3
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
D Class.forName Allgemeine Java-Themen 2
S Class RGB Farbe Allgemeine Java-Themen 2
S JavaDoc aus .class Datei extrahieren Allgemeine Java-Themen 5
mongole Class.class.getResource(...) Allgemeine Java-Themen 10
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
T Class Not Found Exception beim import von Paket Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben