Prozess-Status

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute!

Ich habe folgendes Problem. Beim Start meines Programms kopiere ich ein paar Dateien von einer Stelle in die andere. Das Programm soll aber erst dann weiter laufen, wenn die Dateien zu Ende kopiert wurden. Gibt es eine Möglichkeit abzufragen, ob der Kopiervorgang abgeschlossen wurde oder nicht?

thanx for help 🙂
 
Ich verstehe das Problem nicht ganz. Wenn du die Dateien synchron kopierst, wartet der ausführende Thread sowieso bis alle Dateien kopiert wurden. Oder kopierst du die Dateien in separaten Threads? Dann wirds ein wenig komplizierter.
 
Ich glaube, du hast recht, die Dateien werden doch kopiert bevor es im Programm weiter geht. Mein Problem ist nur, ich starte mein Programm mit dem Befehl:
Code:
java -Djava.ext.dirs=ordner1;ordner2 -jar MyProgram.jar
Gebe ihm sofort 2 Ordner mit, wo er nach externen Klassen suchen soll. Kennt sich zufällig jemand mit dem Befehl aus? Wenn ich später (während das Programm läuft) weitere Klassen reinkopiere, werden diese vom Programm nicht gefunden. Und es kommt ein NoClassDefFoundError. Weiß jemand woran es liegt?
 
Wenn du später Klassen dynamisch dazu laden möchtest, die sich nicht im Klassenpfad befinden brauchst du einen eigenen ClassLoader. Da ich glücklicherweise noch nie so eine Anforderung hatte musst ich das bis jetzt auch noch nicht machen. Das Thema ist aber nicht ganz so einfach.
 
Ehrlich gesagt versuche ich gerade vom ClassLoader wegzukommen, mit dem ClassLoader wird es in meinem Fall nicht funktionieren. Ich dachte mir, ich kann das Programm vielleicht mit dem oben genannten Befehl ausführen und später die benötigen Klassen reinschmeißen. Aber scheint auch nicht funktionieren. Dann muss ich wohl weiter grübbeln. Danke trotzdem für den Tipp. 🙂
 
Es kann nur über einen eigenen ClassLoader funktionieren! Einen anderen Weg Klassen dynamisch nach zu laden gibt es nicht!
 
Wenn du Plugins verwenden willst, würde ich auch auf ein Plugin Framework zurückgreifen.
Sonst kann ich dir garantieren, dass du das quadratische Rad neu erfindest.
 
Mit dem ClassLoader bin ich gescheitert, weil es folgendes Problem gab. Vielleicht hat ja jemand eine Idee, wie man das realisieren könnte. Ich arbeite mit externen Bibliotheken (ActiveMQ und JMS, das ist aber erstmal unwichtig), die sich in einem ClassLoader befinden. Und zwar sind ALLE benötigten Klassen dort. Nachdem ich ein Objekt einer Klasse aus dem ClassLoader erzeugt habe, möchte ich eine Methode aufrufen, das könnte so aussehen:

Code:
Class cls = Class.forName(Klassenname, true, loader);
Constructor ct = cls.getConstructor(String.class);
Object o = ct.newInstance();
	    
Method m = cls.getMethod("Methodenname");
Object o2 = m.invoke(o);

Mit "invoke" rufe ich die Methode auf. Diese Methode kann allerdings eine JMSException werfen. Die JMSException-Klasse befindet sich ebenfalls im ClassLoader. Das Problem ist nur, ich bekomme ein NoClassDefFoundError und zwar weil die JMSException-Klasse nicht gefunden wird.

Hat jemand eine Idee wie man das lösen könnte?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben