# Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7



## Blender3D (7. Jul 2017)

Ich habe eine Anwendung erstellt, die interessanterweise auf meinem Windows 10(i7, 16 GB)  und Ubuntu (i5 8GB) ohne Probleme läuft aber nicht unter meinem Windows 7( i3 6GB )!
Das Programm startet mit einem Menü mit Full HD Hintergrundgrafik jpg ca. 230 KB.
Unter Win 7 kann ich nicht einmal mehr eine JOptionpane öffnen.
Kann es sein, dass ich einen unentdeckten  Deathlock übersehen habe, der nur bei Win7 auftritt ?. Der Speicher dürfe kein Problem sein da ich auf allen Systemen nur Java 32 Bit verwende und die Speicherobergrenze von 3 GB immer abgedeckt sein sollte.

Wer hat eine Idee woran das generell liegen könnte ?


----------



## mrBrown (8. Jul 2017)

Welche Java-Version ist denn jeweils installiert und gibt es irgendeine Fehlermeldung?


----------



## Blender3D (8. Jul 2017)

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
und keine Fehlermeldung.
Im Main Menu wird die Hintergrundgrafik nicht angezeigt und ein klick auf den Menüpunkt Exit der nur eine JOptionpane aufruft führt zum Steckenbleiben der Anwendung aber nur unter dem Win7 Rechner.


----------



## Thallius (8. Jul 2017)

Hast du es denn mal aus einer command Shell heraus gestartet? Ich glaube nich das da kein Fehler kommt

Gruß

Claus


----------



## Blender3D (9. Jul 2017)

Hier ein Screenshot mit der command Shell ohne Fehlermeldung leider.
Das Fenster in der Mitte ist eine JOptionpane die nicht mehr richtig angezeigt wird.
Bin ratlos.


----------



## Blender3D (9. Jul 2017)

Gibt es gute Tools, um Threads und Speicher einer Java Anwendung in der Entwicklung zu checken.
Die Software kommt im Businessbereich zum Einsatz. Und ich möchte eventuell grobe versteckte Fehler vermeiden. Da die Software auf dem Win 7 System nicht läuft, deutet alles auf einen groben Schnitzer meinerseits hin.
Anzumerken ist, dass andere von mir erzeugte Java Programme  auf diesem System einwandfrei laufen.
Bin für jeden Rat dankbar.


----------



## Harry Kane (9. Jul 2017)

"Es tritt kein Fehler auf" und "Es wird kein Fehler angezeigt" sind zwei verschiedene Paar Schuhe.
Wenn du so ein Konstrukt in deinem Code hast

```
try{
//irgendein Code
}
catch(Exception e){
//hier steht nix. Exceptions werden weder weitergereicht noch gescheit bearbeitet.
}
```
würdest du auftretende Fehler nicht bemerken.


----------



## Blender3D (9. Jul 2017)

Ist mir bewusst. Ich bin ja auf der Suche nach einem eventuell versteckten Fehler. ( Ist ja wahrscheinlich mein Problem.) Seltsam ist nur das bei meinen anderen Systemen alles problemlos läuft. Und außerdem, wird nur eine JOptionpane geöffnet auf der nur Strings angezeigt werden. Und da wird auch kein Fehler von mir künstlich abgefangen. Wie gesagt ich bin ratlos


----------



## Harry Kane (9. Jul 2017)

Dann zeig doch mal den kompletten Code, wo nur eine JOptionPane mit Strings angezeigt wird.
Haben die anderen Proigramme, die anstandslos laufen, auich eine Gui? Wenn ja, laufen alle mit demselben Framework (SWT, Swing, JavaFX, etc.) und demselben LAF?


----------



## Blender3D (9. Jul 2017)

Alle haben eine GUI und laufen unter Swing und derselben Java Version siehe oben.


----------



## Blender3D (9. Jul 2017)

```
private void showUsedMemory() {
        if (!GLOBAL.debug)
            return;
        Runtime rt = Runtime.getRuntime();
        long totalMem = rt.totalMemory();
        long maxMem = rt.maxMemory();
        long freeMem = rt.freeMemory();
        double megs = 1048576.0;
        System.out.println("Total Memory: " + totalMem + " (" + (totalMem / megs) + " MiB)");
        System.out.println("Max Memory:   " + maxMem + " (" + (maxMem / megs) + " MiB)");
        System.out.println("Free Memory:  " + freeMem + " (" + (freeMem / megs) + " MiB)");
    }
```


```
case MenuButtonBar.BUTTON_EXIT:
            int ok = JOptionPane.showConfirmDialog(null,
                    "         EXIT Poker Watch\n\n\n Created by ....",
                    "    C.A.T.S. (c) 2017    Version 1.0", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

            showUsedMemory();
            if (ok == JOptionPane.YES_OPTION)
                System.exit(1);
            break;
        }
```

GLOBAL.debug = false;


----------



## mrBrown (9. Jul 2017)

Kommen denn die souts?

Du kannst mal 'nen Thread-Dump machen lassen, uU sieht man da, wo's hängt.


----------



## Blender3D (9. Jul 2017)

souts ?
wie funktioniert so ein Thread Dump
Danke für die Info


----------



## mrBrown (9. Jul 2017)

Blender3D hat gesagt.:


> souts ?


Die System.out.printlns



Blender3D hat gesagt.:


> wie funktioniert so ein Thread Dump


https://dzone.com/articles/how-analyze-java-thread-dumps


----------



## Harry Kane (10. Jul 2017)

Haben alle Anwendungen dasselbe LAF? Ist beim Windows 7 Rechner ev. der headless mode aktiv?


----------



## Blender3D (10. Jul 2017)

Harry Kane hat gesagt.:


> Haben alle Anwendungen dasselbe LAF? Ist beim Windows 7 Rechner ev. der headless mode aktiv?


Danke für Deinen Input. Was ist der headless mode ?


----------



## Blender3D (10. Jul 2017)

Heureka der Fehler ist gefunden. Vormals danke für Eure Hilfe. Der Fehler lag daran, dass ich unter UBUNTU OPEN GL
mittels  System.setProperty("sun.java2d.opengl", "true") aktiviere und die Zeile auch unter Windows aufgerufen wird.
Weil unter UBUTNTU OPEN GL nicht automatisch aktiviert ist.
Unter meinem Win10, UBUNTU Systemen stellt das kein Problem dar. Wahrscheinlich weil auf beiden Systemen eine NVIDA Karte läuft. Am Win 7 System ist eine AMD Radeon HD 5700 verbaut.
Jedenfalls das entfernen dieser Zeile hat das Problem beseitigt.
Also kein Deathlock oder Speicherproblem im CODE. 
Für diejenigen die auf ein ähnliches Problem stoßen: Java kann zwar Systemeigenschaften setzen, aber das kann auch Folgen für das jeweilige System haben.


----------

