Inhalt - Aktualisierungs Problem

Helgon

Bekanntes Mitglied
Hey, ich habn Programm, dass paar .txt Dateien im Internet ausliest und sie dann anzeigt.

Im Minuten Intervall wird der ganze kram neu aufgerufen, damit Aktualisierungen eben sofort angezeigt werden.

Das skurrile ist, dass das Programm sich manchmal nur alle Paar Stunden oder auch mal länger gar nicht oder auch öfter aktualisiert, ganz komisch.

Aber nicht auf allen PCs.

Wenn ich auf einigen PCs die Jar starte wird sofort der richtige Inhalt angezeigt (beim Start wird auch alles ausgelesen). Auf anderen PCs wiederum zeigt er nix an (oder das falsche, nicht aktualisierte sprich das was vorher da stand, aber wenn ich die .txt im Browser aufrufe seh ich ja, dass der Inhalt stimmt. Da frag ich mich wo die Jar überhaupt den alten Inhalt herkriegt ???:L)

Hat jemand ne Idee woran das liegen könnte?

Grüße
 
Wenn du ne Klasse
Code:
Timing
hast, dann liegt der Fehler vermutlich irgendwo in Zeile 33. Das passiert öfter.
 
Sehr lustig.

Es liegt ja nicht an der Logik, sondern an vllt dem Server? Den PCs? Etc?

Nochmal ganz langsam.

Ich hab 2 Pcs nebeneinander.
Mit PC1 starte ich das Programm, alles richtig
Mit PC2 starte ich das Programm, falsch - Es wird Beispielsweise Inhalt vom Vortag angezeigt. (Wobei der Inhalt sich 4-5x am Tag ändert)
 
Ohne zu beschreiben WAS du versuchst auszlesen, WIE du das versuchst und eventuell Code dazu, kann man dir wenig helfen.
 
Wie gesagt. .txt Dateien so

Java:
	public ScreenLoader(){
		
		BufferedReader br = null;
        InputStreamReader isr = null;       
        URL url = null;
        String line;

        try {
            url = new URL("http://www.q-visions.de/vertretungsplan/webservice/sh.txt");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
				while((line = br.readLine()) != null){
					sh = line;
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
        }
        
        try {
            url = new URL("http://www.q-visions.de/vertretungsplan/webservice/sm.txt");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
				while((line = br.readLine()) != null){
					sm = line;
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
        }
        
        try {
            url = new URL("http://www.q-visions.de/vertretungsplan/webservice/lauf.txt");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
				while((line = br.readLine()) != null){
					lauf = line;
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
        }
        
        try {
            url = new URL("http://www.q-visions.de/vertretungsplan/webservice/settings.txt");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
				while((line = br.readLine()) != null){
					settings = line;
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
        }
        
        try {
            url = new URL("http://www.q-visions.de/vertretungsplan/webservice/msg.txt");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
				while((line = br.readLine()) != null){
					msg.add(line);
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
        }    
	}

Der Inhalt wird unteranderem auch in einer jTable dargestellt

Java:
public void fillTable(ScreenLoader sl){
    	
        sh = sl.getSh();
        if(!sh.equals("null")){
	    	int dateEnd = sh.indexOf("|");
	    	String date = sh.substring(0,dateEnd);
	    	jLabel1.setText(date);
	    	String[] infos = sh.split("\\|");
	    	ArrayList<String> temp = new ArrayList<String>();
	    	
	    	if(infos[1].equals("miss")){
	    		jLabel1.setText(jLabel1.getText()+" - KEIN AUSFALL ");
	    	}else{
		    	for(int i = 0; i < infos.length; i++){
		    		temp.add(infos[i]);
		    	}  	
		    	temp.add(" ");
		    	
				int counter = 1;
				for(int i = 0; i < (infos.length)/7; i++){
					for(int n = 0; n < 7; n++){
						jTable1.setValueAt(temp.get(counter), i, n);
						counter++;
					}
				}
	        }
        }

Edit

Java:
	@Override
	public void actionPerformed(ActionEvent arg0) {
		ScreenLoader sl = new ScreenLoader();
		resetTable();
		fillTable(sl);
		fillLauf(sl);
		fillMsg(sl);
		switchTabs(sl);
	}
 
Zuletzt bearbeitet:
Warum schreibst du fünf mal den selben Code, bei dem sich lediglich ein einziger Parameter (die URL) ändert? Wäre es nicht sinnvoller, eine Methode zu schreiben, die die URL erwartet und alles zurückgibt, was du eingelesen hast? Dann würdest du nämlich folgenden Fehler vermeiden:
Java:
while((line = br.readLine()) != null){
    sh = line;
}
Äquivalent die ersten vier Blöcke.

Java:
while((line = br.readLine()) != null){
    msg.add(line);
}
der einzig sinnvolle Block.


Wie zu sehen ist, schreibst du fünf mal den selben Code, beim letzten jedoch machst du eine kleine Änderung: an den aktuellen Inhalt deines Strings wird die letzte eingelesene Zeile angehängt. In allen anderen Blöcken ersetzt du den kompletten Inhalt jedes Mal durch die neue Zeile, was irgendwie ziemlich nutzlos ist...

Also schreib dir eine Methode zum Lesen der Datei und gib deren Inhalt zurück, den speicherst du dann in ein Array und fertig ist...
 
Zuletzt bearbeitet:
Das war nur schnell hingeschmiert, weil ich noch am rumprobieren war.

Mit dem eigentlichen Problem hat das ja mal gar nichts zu tun :/

In allen anderen Blöcken ersetzt du den kompletten Inhalt jedes Mal durch die neue Zeile, was irgendwie ziemlich nutzlos ist...

Muss ich das verstehn? 😀

Ich will doch auch alles komplett ersetzen?!
 
Dann kapier ich den Sinn des Ganzen nicht...

Java:
while((line = br.readLine()) != null){
    sh = line;
}
Warum liest du eine neue Zeile ein, liest sie inne neue Variable und überschreibst diese Variable dann bei Einlesen der nächsten Zeile wieder? Wenn die Schleife dann durchgelaufen ist, steht in sh nur die allerletzte Zeile der Datei, soll das WIRKLICH so sein?

Ich schreib jetzt mal ein Bsp, wie ich das Ganze verstehe:
Java:
String content[] = String[5];
public String readURL(URL url){
        
        BufferedReader br = null;
        InputStreamReader isr = null;       
        URL url = null;
        String line;
        String result;
 
        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            br = new BufferedReader(isr);
            try {
                while((line = br.readLine()) != null){content.append(line);}
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return result;
}
 
Zuletzt bearbeitet:

Zurück
Oben