main()-Menthode neustarten/Programm neustarten

Status
Nicht offen für weitere Antworten.
D

DanielP.

Gast
Hi Forum,

ich werde gerade gegen meinen Willen dazu gezwungen, Java zu programmieren. Momentan hänge ich an dem Problem, dass gesamte Programm bzw. die main()-Methode der Hauptklasse neuzustarten. Folgende Situation:

- Das Programm kommuniziert mit einer MySQL-Datenbank.
- Der User kann die Verbindungseinstellung zur Datenbank ändern.
- Tut er das, soll das Programm neugestartet werden.

Grund:

Nur beim Start des Programms wird geschaut, ob die Verbindung tatsächlich zustande kommt. Während des Programmablaufs wird das natürlich auch gemacht (kurz bevor eine Abfrage gemacht wird, muss ja die Verbindung stehen), nur dann soll sich das Programm beenden, sobald keine Verbindung mehr da ist bzw. fordert es zum Neustart auf, um die Verbindungsdaten zu überprüfen. "on the fly" möchte ich das nämlich nicht machen...

Kann ich einfach alle Fenster per "setVisible(false)" ausblenden und die main()-Methode der Hauptklasse erneut aufrufen? Also es funktioniert, nur frage ich mich, ob dann zwei (oder mehr) "main()-Schleifen" laufen und was passiert eigentlich mit den Fenstern. Die sind ja auch noch da oder werden die per "setVisible(false)" gekillt?
Denn wenn es mehrere "main()-Schleifen" gibt und die Fenster nur ausgeblendet werden, dann ist ja irgendwann der Arbeitsspeicher voll o_O *argh* ich steh momentan echt auf dem Schlauch. Dieses Java-OO-Gegängel geht mir total auf die Nerven, nur darf ich nichts anderes verwenden :-((

Danke für die Erleuchtungen!
Daniel

P.S.:
Ich habe die gleiche Frage vor einigen Stunden im SELFHTML-Forum gepostet - da hat allerdings niemand geanwtortet. Hoffe, das hier mir jemand weiterhelfen kann. Ist wirklich dringend :cry:
 

nocxsville

Bekanntes Mitglied
So wie du das vorhast ist das, naja ich sags mal milde "blöd". Wenn du die komplette Anwendung neustarten musst, um die Verbindung zu prüfen bzw. zu resetten, dann ist deine Programmarchitektur SEHR schelcht. Du kaufst dir ja auch kein neues Auto, wenn der Sprit alle ist oder?

Also überdenk nochmal die Architektur deiner Anwendung. Liess dich am besten erst mal ein wenig in java ein. Ein gutes Buch "Java ist eine Insel" link

Gruß,
nocxsville.
 
D

DanielP.

Gast
MÜSSEN nicht, aber WOLLEN :lol:

Um die Verbindungsdaten zu testen, muss ich natürlich nicht die gesamte Anwendung neu starten - das wäre ja verrückt. Ich habe mit in meine MySQL-Klasse eine Methode "Test()" angelegt, die versucht, eine Verbindung aufzubauen. Klappt das, gibt sie TRUE anonsten FALSE zurück. Da ich die Verbindung immer nur dann aufmache, wenn ich sie auch brauche (immer vor einer Abfrage, ich muss den MySQL-Server ja nicht unnötig "nerven", wenn ich nichts brauche), rufe ich vorher auch immer diese "Test()"-Funktion auf, um sicher zu gehen, dass auch alles richtig funktioniert.
Beim Programmstart ist es nun so, dass ich auch diesen Test mache, ob alles klappt. Ist dies nicht so, gibt es erst mal eine Fehlermeldung, danach geht ein Fenster auf, in den man die Verbindungsdaten überprüfen bzw. auch neu eingeben kann. Dann speichert man das Ganze. Und nun möchte ich das Programm genau an dieser Stelle neustarten - sobald die Verbindungseinstellungen geändert wurden. Das Programm soll sich auch neustarten, wenn es während der Ausführung die Verbindung zum Server verliert (vorher Fehlermeldung; wird aber eh nicht oft vorkommen) oder wenn die Verbindungseinstellungen geändert werden (kommt auch nicht oft vor). Von daher ist das schon zu verschmerzen oder würdest du das anders machen? Und wie sieht das mit dem Neustart selbst aus? Gibt es dann mehrere main()-Methoden und was passiert mit den Fenstern, wenn ich sie mit "setVisible(false)" entferne?

BTW "Java ist auch eine Insel" kenne ich und daraus ist der Spruch "LOST on Java" entstanden. Das Buch ist der absolute Horror. Das wirft bei mir immer mehr Fragen auf, als es beantwortet :bahnhof: Daher ist der Spruch "LOST ..." noch passender :bae: Gemütlich einlesen ist da nicht, das Programm muss bis nächsten Freitag halbwegs fertig sein - ich bin froh, wenn das Klassen-Geraffel irgendwie läuft :autsch: :wink:
 

nocxsville

Bekanntes Mitglied
DanielP. hat gesagt.:
BTW "Java ist auch eine Insel" kenne ich und daraus ist der Spruch "LOST on Java" entstanden. Das Buch ist der absolute Horror. Das wirft bei mir immer mehr Fragen auf, als es beantwortet :bahnhof: Daher ist der Spruch "LOST ..." noch passender :bae: Gemütlich einlesen ist da nicht, das Programm muss bis nächsten Freitag halbwegs fertig sein - ich bin froh, wenn das Klassen-Geraffel irgendwie läuft :autsch: :wink:

Vielleicht liegt es daran, das du das Konzept Objektorientierter Programmiersprachen nicht verstanden hast.
Eine Anwendung braucht (in der Regel) nur eine main-Methode. Die wird auch nur einmal aufgerufen (beim Start der Anwendung)

Das was du machen möchtest sind Verbindungsdaten neu zu setzen und danach eien neue Verbindung aufzubauen und die Oberfläche zu aktualisieren. Ich kenne deinen Code nicht aber mit einer guten Architektur sind das max. 3 Zeilen Code.

Ich halte es für sehr unrealistisch bis Freitag ein "gutes" Programm in Java zu implementieren, ohne Grundkenntnisse in Java zu besitzen.

Leider klieren viele Leute Anwendungen in Java so zusammen wie du und wundern sich dann warum das Programm so langsam ist. Meist schieben sie das dann auf die Programmiersprache.
 
G

Guest

Gast
nocxsville hat gesagt.:
DanielP. hat gesagt.:
Vielleicht liegt es daran, das du das Konzept Objektorientierter Programmiersprachen nicht verstanden hast.
Eine Anwendung braucht (in der Regel) nur eine main-Methode. Die wird auch nur einmal aufgerufen (beim Start der Anwendung)
Verstanden schon und ich mag's auch - aber nicht bei Java. Ich habe bei Java das Gefühl, dass alles, was nicht niet- und nagelfest ist, krampfhaft in irgendwelche Klassen gesteckt wird und man als Programmierer regelrecht gezwungen wird, nur OO zu arbeiten. Ich möchte da aber auch keine Grundsatz-Diskussion starten - ich mag einfach kein Java :wink:
Das was du machen möchtest sind Verbindungsdaten neu zu setzen und danach eien neue Verbindung aufzubauen und die Oberfläche zu aktualisieren. Ich kenne deinen Code nicht aber mit einer guten Architektur sind das max. 3 Zeilen Code.
Hm, ja. Um neue Verbindungsdaten zu setzen, muss ich meiner MySQL-Klasse eigentlich nur folgenden Code geben:
Code:
mysql = new MySQL(configuration.getValue("database_server"),
                  configuration.getValue("database_user"),
                  configuration.getValue("database_password"),
                  configuration.getValue("database_name"));
Danach rufe ich "Connect()" auf, um die Verbindung herzustellen bzw. "Test()", um sie zu überprüfen. Auf die Idee des Programm-Neustarts bin ich eigentlich nur dadurch gekommen, weil ich nach einer Möglichkeit suche, eine Art Wiedereinstiegspunkt zu realisieren, wenn die Verbindung nicht geklappt hat und die Funktion bzw. der Code nach dem Anwender-Ereignis flöten geht. Der Programmneustart ist die primitivste Version davon ... BTW mir geht grad ein :idea: auf. Sobald der Anwender eine Aktion auslöst, teste ich einfach die Verbindung. Geht das in die Hose, kommt 'ne Fehlermeldung, in der man sich entscheiden kann, ob man sich den Konfigurations-Dialog anschauen will oder nicht. Dort kann man dann seine Verbindungsdaten überprüfen. Wenn ich das Fenster der Konfiguration modal öffne, kann ich nach dem Konfigurations-Dialog ganz normal zum eigentlichen Programm zurück und der Anwender versucht halt nochmal, ob er die Aktion ausführen kann, die eine Datenbankverbindung benötigt. Wenn das nicht klappt, fängt das Spielchen mit dem Konfigurations-Dialog halt wieder von vorne an. Mir gefällt an der Sache nur nicht, dass ich diese Logik dann hinter jede MySQL-Anfrage packen müsste. Naja, mach ich halt 'ne Methode draus und pack das in irgendeine Klasse - davon hab ich eh noch nicht genug :autsch:
Ich halte es für sehr unrealistisch bis Freitag ein "gutes" Programm in Java zu implementieren, ohne Grundkenntnisse in Java zu besitzen.
Dein Wort in Gottes Ohr. Ich mache gerade eine Ausbildung zum Anwendungsentwickler und dieses Java-Proggi ist Bestandteil eines Schulprojekts. Unsere Klasse ist gemischt, d. h. wir sind 25 Leute; 20 davon sind Systemadministratoren, 5 sind Anwendungsentwickler. Jetzt kannst du dir vorstellen, wie das mit der Programmier-Erfahrung in unserer Klasse ausschaut. Zumal einige der AEs erst während ihrer Ausbildung das Programmieren gelernt haben. Ich habe den Vorteil, dass ich schon vor meiner Ausbildung ca. 4-5 Jahre Programmiererfahrung in verschiedenen Sprachen hatte und mich irgendwie durch Java fuchse kann. Aber ein Programm ohne Kenntnisse der Sprache alleine zu stemmen (der Rest meiner Gruppe kann nicht oder nur kaum programmieren, setzt sich zumindest neben dran, versteht aber nur Bahnhof [zumindest die SysAdmins, der andere AE kann ein bisschen mithalten :lol:]), ist in der Tat unrealistisch (auch wenn ich schon ziemlich weit gekommen bin). Das haben wir auch unseren Lehrern gesagt und gebeten, auf andere OO-Sprachen auszuweichen, die wir wenigsten kennen. Die meinten, wir hätten ja noch genug Freizeit zwischen den Schul-Blöcken (wir haben immer alle 8 Wochen 3 Wochen Unterricht), in der wir uns Java aneignen und das Programm basteln können. Tolle Aussage, zumal wir auch kein bisschen im Betrieb arbeiten müssen und für das gesamte Projekt keine 3 Monate Zeit war. Laut unseren Lehrern wäre das realistisch. Tja, die wissen bescheid: Wenn wir als Firma eine Anfrage für eine Applikation reinkriegen, die unser KnoffHoff oder unsere Resourcen sprengt, müssen wir ablehnen. Außerdem habe ich noch keinen Kunden gesehen, der mir vorschreibt, in was ich eine Applikation zu schreiben habe. Und falls bestehende System kompatibel übernommen werden sollen, dann werden nur die Daten übernommen und die Systeme stillgelegt. Wir übernehmen doch kein Support für Sachen, mit denen wir uns nicht auskennen ... wie auch immer. Immerhin geht es allen Gruppen so - bis auf eine, die hat sich unsere beiden "Java-Gurus" gekrallt :autsch:
Leider klieren viele Leute Anwendungen in Java so zusammen wie du und wundern sich dann warum das Programm so langsam ist. Meist schieben sie das dann auf die Programmiersprache.
Ja, davon kann ich ein Lied singen - bin hauptberuflich PHP-Frickler und durfte mehrfach erleben, wie "dreckige" Programme (meist Uralt-Script ala PHP3 oder PHP4) mich und meine Kollegen heimgesucht haben. Die Programmiersprache ist es auch, aber das schlimmste Übel sitzt vor'm Bildschirm :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
G main Methode Java Basics - Anfänger-Themen 5
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
J main methode Java Basics - Anfänger-Themen 1
B No Main Classes Found Java Basics - Anfänger-Themen 7
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
M String außerhalb der main-Methode Java Basics - Anfänger-Themen 4
scratchy1 ArrayOutOfBoundException in main-Methode Java Basics - Anfänger-Themen 17
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
G Was als main Method Java Basics - Anfänger-Themen 6
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
J Compiler-Fehler Java findet main Klasse nicht Java Basics - Anfänger-Themen 16
B Parameterübergabe in main Java Basics - Anfänger-Themen 1
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
M Methodenaufruf in der Main Datei funzt nicht Java Basics - Anfänger-Themen 13
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
G Instanzvariable in main-Methode verboten? Java Basics - Anfänger-Themen 3
M Objekt starten von der main-Methode Java Basics - Anfänger-Themen 1
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
A Methode aufrufen in main-Methode Java Basics - Anfänger-Themen 5
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
C Erste Schritte (Netbeans) no main classes found Java Basics - Anfänger-Themen 5
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
AssELAss Klassen Java Klasse in main-methode ausführen Java Basics - Anfänger-Themen 7
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
J Methode in main-Methode aufrufen Java Basics - Anfänger-Themen 5
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
M Klassen Main Methode in einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 13
TheMenox Methoden Auslagerung von Code aus der "main" Methode sinnvoll? Java Basics - Anfänger-Themen 70
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
S Methode auf Main zugreifen Java Basics - Anfänger-Themen 5
D String aus Main in Klasse übergeben Java Basics - Anfänger-Themen 4
S Methoden main-Methode integrieren Java Basics - Anfänger-Themen 2
K Methoden Programm ohne Main Methode starten Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
R window-Klasse, main-loop und unausschaltbares anti-aliasing Java Basics - Anfänger-Themen 0
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
U Umschreiben ohne main methode ;-) Java Basics - Anfänger-Themen 8
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
F Threads Variable aus einem Thread in main Methode? Java Basics - Anfänger-Themen 9
K Exception in thread "main" Java Basics - Anfänger-Themen 7
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben