Hallo,
ich wollt wärend der Laufzeit mein Programm durch eine "neuere" Version austauschen.
Dazu habe ich einmal das Orginalprogramm und davon eine Kopie mit einem zusätzlichen Button auf dem JFrame.
Die Probleme:
1.
Anstatt die neue Version aus dem Internet zu laden, passiert nix (also ich sehe mein JFrame unverändert).
Wenn ich mir ausgeben lasse (.toString()), was c ist, dann ist es genau das JFrame, mit dem ich starte. Aber es müsste doch das andere (neuere) sein?!
2.
Keine Fehlermeldung, aber die Erfolgsmeldung erscheint. Also irgend was mach ich falsch. Nur was?
Das Programm läuft dann auch normal weiter.
(teil des Programms
Was ich auch nicht verstehe, wieso wird das "ausgabe.append("Das Programm wurde erfolgreich aktualisiert!\n");" nicht angezeigt, aber der Button danach wird noch verändert. Normalerweise sollte das doch angezeigt werden.
Ich bin für jeden Tipp dankbar. Bin etwas verwirrt. ;-)
ich wollt wärend der Laufzeit mein Programm durch eine "neuere" Version austauschen.
Dazu habe ich einmal das Orginalprogramm und davon eine Kopie mit einem zusätzlichen Button auf dem JFrame.
Die Probleme:
1.
Anstatt die neue Version aus dem Internet zu laden, passiert nix (also ich sehe mein JFrame unverändert).
Wenn ich mir ausgeben lasse (.toString()), was c ist, dann ist es genau das JFrame, mit dem ich starte. Aber es müsste doch das andere (neuere) sein?!
2.
Keine Fehlermeldung, aber die Erfolgsmeldung erscheint. Also irgend was mach ich falsch. Nur was?
Code:
static Object ladeKlasse (String pfad, String klassenname) throws Exception
{
//klassen laden und neue instanz zurückgeben
System.out.println(pfad + ", " + klassenname);
URL url = new URL(pfad);
URLClassLoader cl = new URLClassLoader(new URL[]{url});
Class c = cl.loadClass(klassenname);
System.out.println("ladeKlasse(): laden erfolgreich!");
ausgabe.append("Das Programm ist erfolgreich aktualisiert wurden!\n");
return c.newInstance();
}
Das Programm läuft dann auch normal weiter.
(teil des Programms
Code:
n=jOptionPane1.showConfirmDialog(this, "Es ist eine neue Version (" + versioninet + ") verfügbar! Wollen Sie Ihre Version jetzt updaten?");
if (n==jOptionPane1.YES_OPTION)
{
ausgabe.append("Programm wird geupdatet. Bitte warten...\n");
button1.setEnabled(false);
URL url2 = new URL("http://www.marfir.de/schule/update.txt");
URLConnection verbindung2 = url2.openConnection();
BufferedReader bfr2 = new BufferedReader(new InputStreamReader(verbindung2.getInputStream()));
while ((zeile=bfr2.readLine()) != null)
{
Object o = ladeKlasse("http://www.marfir.de/schule/", zeile.trim());
System.out.println(o.toString());
}
bfr2.close();
//fertig geupdatet
ausgabe.append("Das Programm wurde erfolgreich aktualisiert!\n");
button1.setEnabled(true);
}
Was ich auch nicht verstehe, wieso wird das "ausgabe.append("Das Programm wurde erfolgreich aktualisiert!\n");" nicht angezeigt, aber der Button danach wird noch verändert. Normalerweise sollte das doch angezeigt werden.
Ich bin für jeden Tipp dankbar. Bin etwas verwirrt. ;-)