static String Variable wird nur beim ersten aufruf durch eine Funktion geändert.

tkisc2

Mitglied
Hallo,

ich bin ganz neu in Java und brauche mal dringend eure fachkundige Hilfe.

Kurz zu meinem Code:
Ich habe ein Programm geschrieben, das einen POST-Request macht und die Ausgabe in eine Datei schreibt. Diese Datei wird dann in einen String eingelesen und aus diesem String bestimmte Teile in static String variablen gespeichert. Diese werden danach auf einer GUI auf JLabeln dargestellt.

Nun zur Problemdarstellung:
Nach dem Klick auf einen JButton soll das HTML-File neu erzeugt werden, die Strings geändert und die JLabel mit den neuen Werten initialisiert werden.

Es stellt sich mir nun das Problem, das ich nach 2 Tagen rumprobieren auf das Folgende reduzieren konnte.

Nach dem Programmstart wird der static String outputstring in der Funktion
static void datareturn(String startsubstring, String endsubstring,
String datastring, int qm, int pos)
nicht neu initialisiert.
Bitte entschuldigt falls der Code schwer zu lesen ist. Wahrscheinlich ist er auch nicht besonders objektorientiert. Ich kenne mich zwar mit C einigermaßen aus aber in Java bin ich absolut neu.

Ich habe meine GUI.java einfach mal hochgeladen. Wenn ich an meinem Post hier noch etwas verbessern kann sagt es mir bitte.

Hinweis: Programmierumgebung Eclipse auf Kali-Linux

Ich hoffe ihr könnt mir helfen. Vielen Dank schonmal im Voraus.
 

Anhänge

  • GUI.zip
    5,4 KB · Aufrufe: 10

DefconDev

Bekanntes Mitglied
Niemand schaut sich gerne 1k Zeilen Javacode in einer Klasse an, die nicht mal groß kommentiert sind. Und die ganzen Wiederholungen im Code sind echt brutal. Und warum benutzt du fast alles auf statischer Ebene?Ziel ist es meines erachtens so wenig statisch zu programmieren wie möglich.

Und warum hast du so extrem viele JPanels? Da steht was von Abstandshalter, aber JPanels werden eigentlich nicht als Grenzen oder ähnliches genutzt.

Also ich empfehle dir erst mal den Code weiter zu reduzieren, mehr mit Schleifen zu arbeiten um wiederholende Schritte zu ein paar Zeilen so quetschen.

Also ich kann jedenfall auf Anhieb den Fehler nicht erkennen, vielleicht sieht jemand anderes mehr.


EDIT: kleiner Hinweis: System.out.println("blabla"); macht das selbe wie System.out.print("blabla");
System.out.print("\n");
 
Zuletzt bearbeitet:

tkisc2

Mitglied
Ok. Ich bin wie gesagt Anfänger. Die Panels gebrauche ich für meine Gui um die Abstände der einzelnen Elemente zu definieren. Aber die sind vermutlich mittlerweile überflüssig. Das "blabla" war zum testen ist wohl noch übergeblieben. Zum static hat mich eclpise mehr oder weniger genötigt. Kannst du mir vielleicht anhand eines Beispiels erklären was ich anstelle des Static benutzen kann?
 

DefconDev

Bekanntes Mitglied
http://www.java-tutorial.org/swing.html
Mit der Seite habe ich mich früher in Swing eingarbeitet.
Bezüglich dem Jpanel ist unter dem Stichwort Layoutmanager einiges erklärt wie man eine Gui anordnet mit seinen Komponenten.

Weisst du denn wie man eine neue Klasse in Java erstellt? Welche IDE(Entwicklungsumgebung) benutzt du?
Eine neue Klasse erstellst du in Java ähnlich wie eine Header-Datei in C, nur ohne Include.

Das System.out.print("blabla") war zufällig gewählt. Ab Zeile 802 benutzt du permmanent zwei Zeilen für den System.out.print statt System.out.println zu nutzen, das in eine Zeile geht.

oder du benutzt System.out.print("blabla\n") oder System.out.print(1234+"\n");
Wollte dir nur bewusst machen dass man bei solchen Kleinigkeiten gegenwirken muss um den Code zu überschaubar wie möglich zu machen.
 

tkisc2

Mitglied
Ok danke für den Tipp. das mit dem println hatte ich gerade auch schon herausgefunden, nur noch nicht überall geändert. Primär kommt es mir aber auf die Lösung meines reinitialisierungsproblems an. Hast du da eine Idee woran das liegen könnte?

Beim Programmstart funktioniert das ja alles. Nur danach stehen im "outputstring" immer wieder die gleichen werte. als ober der nicht überschrieben werden könnte. :(

Ich Entwickle mit eclipse falls du das meintest. Neue Klasse anlegen hab ich vorher leider noch nicht
 

tkisc2

Mitglied
Damit wird die funktion aus der Funktion refreshgui heraus ja aufgerufen. Ich habe nicht speziell geprüft ob die übergabe dafür funtioniert, aber da das für den Datenstring aus dem ich meine Werte hole auch funktioniert hat gehe ich mal davon aus.

Oder unterscheiden sich die beiden mal abgesehen vom Datentyp.

Mich verwirrt halt besonders, das es beim Programmstart funktioniert. (Dabei werden die gleichen Funktionen genutzt.)
 

tkisc2

Mitglied
Vielleicht hilft es wenn ich den Ablauf etwas verdeutliche.

1. Programmstart --> Funktion data() aufrufen (erzeugt das html-File ausgabe.html)
2. Funktion refreshgui() aufrufen --> kopiert inhalt aus datei in einen String.
--> ruft mit diesem String und Suchparametern die Funktion datareturn() auf welche für die jeweiligen parameter den gesuchten String in outputstring schreibt.
--> Variablen mit den jeweiligen Werte von outputstring initialisieren.
3. jetzt in der main -->Label mit den Variablen initialisieren

Nun der Ablauf für mein Problem
4. die Aktion des JButton refresh ruft wieder data() auf --> funktioniert noch
5. refreshgui wird aufgerufen --> der String wird neu initialisiert.
--> datareturn wird wieder aufgerufen !selbe suchparameter nur geänderter Datenstring ! (übergabe funktioniert hab ich in der Funktion datareturn() geprüft.)
--> variablen mit outputstring reinitialisieren !!! Funktioniert nicht!!! da outputstring nicht überschrieben wird.
6. Label initialisiern (im actionlistener des Buttons) --> getestet --> funktioniert.
 

JStein52

Top Contributor
Kannst du mit dem Debugger umgehen ? Dann würde ich mal durch die datareturn durchdebuggen. Oder
anderenfalls einfach mal die datareturn mit print-Ausgaben pflastern um zu sehen was da drin passiert. Denn diese ist ja die einzige Stelle wo outputstring verändert wird. Also wird sie entweder gar nicht aufgerufen oder darin läuft was falsch.
 

tkisc2

Mitglied
Ja mit dem Debugger komm ich klar das Problem ist aus irgendeinem Grund hat das Eclipse das ich auf meinem Linux benutze keinen :( sonst hätte ich da auch schon geguckt. Ich dachte das Problem wäre möglicherweise trivial z.B. fallscher Datentyp (das man da kein static für nutzen darf oder sowas).

Das mit den print hatte ich ja schon probiert. so hab ich ja erst rausgefunden, dass der Datenstring aktualisiert wird, der outputstring aber nicht.
 

Dompteur

Top Contributor
Ich habe jetzt nur einen kurzen Blick reingeworfen.
Aber in der Methode "refreshgui" hängst du an die Variable "GUI.datastring2" laufend Daten an.
Beim 2. Aufruf setzt du sie aber nicht auf "", sondern hängst die neue Datei ebenfalls wieder an.
=> Die Variable wächst und deine "datareturn" Aufrufe finden immer die gleichen Daten am Anfang des Strings.

Generell stellst sich da die Frage, warum du datastring2 static und nicht als lokale Variable in der Methode deklarierst.
 

tkisc2

Mitglied
Hab es doch gerade noch getestet. Das war der Fehler. Vielen herzlichen Dank Dompteur.

Auch einen herzlichen Dank an die anderen für die guten Tipps.
 

VfL_Freak

Top Contributor
Moin,
mal so nebenbei:
gehe ich mal davon aus
Dies ist sicher eines der beliebstesten (Anfänger-)Fehler :cool:
Sowas ist immer gefährlich!
Vor allem bei auftretenden Problemen sollte man solche Annahmen stets prüfen! Entweder im Debugger oder (notfalls) mit SysOut's !
Wenn eine solche Annahme nämlich NICHT zutrifft, suchst Du Dir ggf. 'einen Wolf' (sprich: an völlig falschen Stellen) ...

Gruß Klaus
 

tkisc2

Mitglied
Ich hätte da jetzt spontan noch eine weitere Frage. Ich habe ein Problem mit der Darstellung von Umlauten unter Linux. Leider konnte ich nach durchforsteter Literatur und nach Befragung des Orakels keine passende Lösung für mich finden.

ich habe einen String in dem ein ü vorkommt. Unter Windows fluppt die Darstellung wie Sie soll aber eben nicht unter Linux. Da steht stattdessen ein. Meine Distribution (Kali) nutzt den UTF-8 Standard.
Unter meiner IDE (Eclipse) gibt es einen Fall, in dem Die Darstellung funktioniert und zwar wenn ich in der runconfiguration unter common encoding auf ISO-8859-1 setze. Das Funktioniert dann aber, (wie zu erwarten war) nach dem export des Jarfiles nicht mehr.

Ich habe diverse Beiträge darüber gelesen, das die JavaVM UTF-16 nutzt und vermute, das da das Problem liegt. Doch wie kann ich das lösen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) 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
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
C Über Boolean Static, String ausgeben Java Basics - Anfänger-Themen 3
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
N public static void main(String args[]) Java Basics - Anfänger-Themen 6
P Was genau bedeutet "public static void main(String[] ar Java Basics - Anfänger-Themen 10
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
B public static void main (String[] args) ??? Java Basics - Anfänger-Themen 2
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
snipesss Was kann 'static'? Java Basics - Anfänger-Themen 4
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
E Objekte und static Java Basics - Anfänger-Themen 2
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
D Erklärung static boolean Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
F Static final Klasse Java Basics - Anfänger-Themen 0
N static und Objekt kombiniert?!? Java Basics - Anfänger-Themen 3
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
A Static variablen --- Anwendungsbereich Java Basics - Anfänger-Themen 11
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
V Static Methods Java Basics - Anfänger-Themen 5
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
B static individuell "vererben"? Java Basics - Anfänger-Themen 8
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
T Static Fehler Java Basics - Anfänger-Themen 1
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
O Warum muss ich static? Java Basics - Anfänger-Themen 6
O Static Java Basics - Anfänger-Themen 15
E non-static method und static context Java Basics - Anfänger-Themen 15
B non static interface Methode Java Basics - Anfänger-Themen 16
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
S Static void Methode Java Basics - Anfänger-Themen 12
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
J Variablen non-static variable Java Basics - Anfänger-Themen 2
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
J static - Methoden Java Basics - Anfänger-Themen 22
X Erste Schritte Methode ohne Static Java Basics - Anfänger-Themen 4
B Classpath static block - Verwirrung Java Basics - Anfänger-Themen 2
S Methoden Warum ist sleep static? Java Basics - Anfänger-Themen 9
K static, non-static Krise Java Basics - Anfänger-Themen 4
R Schlüsselworte static Methoden und Imports Java Basics - Anfänger-Themen 10
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben