# Datei auf Server Schreiben



## Vehementis (16. Feb 2012)

HI
bin noch relativ neu bei java...
beschäftige mich erst ein paar tage damit

aus spaß hatte ich mir für den anfang ein Programm geschrieben was im endeffeckt doch so gut und nützlich gewurden ist das ich es auf meiner webite online stellen wollte

das hab ich inzwischen über java webstart auch ganz gut hinbekommen...

mein Problem ist das das Programm eine *.txt Datei abfragt
und jeder der es nutzt die möglichkeit haben muss auch etwas hinzuzufügen

das heißt man trägt in das Programm seinen ingame Namen ein und einen code welcher dann einer Liste hinzugefügt wird.
eben diese liste ist als *.txt gespeichert

Das schreiben der Datei funktioniert local einwandfrei 
nur leider lässt der server keine bearbeitung der Datei zu.

hier mein code:

```
public ccFile() throws MalformedURLException
    {
        ccliste = new URL("http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt");
    }
```


```
public void writeToFile(String ncc)
    {
        try 
        {
            URLConnection connection = ccliste.openConnection();
            connection.setDoOutput(true);
            bw = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
            bw.append(ncc);
            bw.newLine();
            bw.close();
        } 
        catch (Exception ex) 
        {
            JOptionPane.showMessageDialog(null, "Die Clancode Listen Datei konnte nicht gefunden werden" + "\n" + "Eventuell bestehen Verbindungsprobleme");
        }
    }
```

meine frage ist nun wie kann ich in writeToFile einen kurzen login und nach beendigung log out am einfachsten realisieren damit die eine Zeile text der *.txt hinzugefügt werden kann.

Datenverschlüsselung ist nicht notwendig da die liste eh frei einsehbar ist.

ich würde dafür dann auf meinem server einen Benutzer erstellen der nur auf die eine Datei zugriff hat.
btw es ist ein Linux server

würde mich freuen wenn mir dabei jemand ein bisschen unter die arme greifen könnte da ich wie gesagt recht neu bei java dabei bin


----------



## Wildcard (17. Feb 2012)

Gibt da verschiedene Möglichkeiten. WebDAV, FTP, SSH, ein Server Programm zu dem du eine Socket Verbindung aufbauen kannst...


----------



## Vehementis (17. Feb 2012)

welches ist denn die einfachste variante mit dem wenigsten programmier aufwand und möglichst ohne zusätzliche software auf dem server?

so das ich z.B. einfach vorne ans try den login setzte und zu close den logout 

ich hab schon bei google und anderen beispiele gesehen mit ssh und sftp
aber meist war das dann nochmal ne seite code wo ich nicht wusste was davon ich brauche weil die anderen meistens daten von den server kopieren oder so...
aber ich will ja nur eine zeile in die *.txt schreiben

hoffe es gibt ne schnelle einfache variante


----------



## Vehementis (17. Feb 2012)

Umso mehr ich darüber Lese umso weniger weiß ich im endeffect...

naja soweit ich das bis jetzt sehe lassen sich daten auf dem vServer wohl nicht direkt schreiben...

also bin ich zz zu dem schluss gekommen das ich die datei downloaden schreiben und wieder uploaden muss... (was meiner meinung nach Problematisch wird wenn es mehrere leute gleichzeitig tun wollen...)
liege ich da wenigstens schonmal soweit richtig?

ich benutze winscp um auf meinen server zuzugreifen
dort habe ich mal versucht über einfaches ftp zu verbinden was nicht funktioniert hat
deshalb denke ich das ich wohl über eine SCP verbindung gehen sollte

wäre jemand so nett mir mal nen ansatz für mein vorhaben zu geben?

also ich will nun folgendes tun...

wenn ich writeToFile() aufrufe soll:
1. serververbindung aufgebaut werden
2. die datei gedownloadet werden (ka wohin...)
3. die eine zeile textx der datei hinzugefügt werden
4. die Datei wieder hochgeladen werden
5. die Runtergeladene datei gelöscht werden
6. die verbindung zum server geschlossen werden

wenn jemand ne bessere idee hat eine aktuelle liste mit den eigetragenen codes + namen online zu haben auf die mein Programm zugreifen kann bin ich für vorschläge immer offen

die liste soll halt abgefragt und in eine JList eingetragen werden
+ der möglichkeit für jeden sich einzutragen


----------



## tuxedo (20. Feb 2012)

Wieso so kompliziert? Wieso bastelst du dir nicht ein einfaches PHP Script mit dem man an den Inhalt der File kommt, sowie die File auch aktualisieren kannst?
Von Java aus brauchst du dann nur die HTTP-Requests abzusetzen. Fertig.

[update]
Am besten wär's dann sogar, du schreibst das in eine Datenbank statt in eine File. Geht mit PHP auch recht easy.


----------



## Vehementis (20. Feb 2012)

Danke für den Hinweis...
wie gesagt bin erst seit ner woche bei java..
kannst du mir vllt nen tip geben wie ich damit anfang? also php und der datenbank geschichte.
(link zu nem tutorial oder ner seite)
bin grade nur mit dem Handy online und kann nicht großartig gucken...
werde mich heute Nachmittag mal mit beschäftigen


----------



## Vehementis (20. Feb 2012)

so ich hab mich mal ein bisschen zu php schlau gemacht...
hab auch schonmal einen ersten Test gastertet aber habe wieder das Problem das ich nicht in die datei schreiben kann...

also der php code sieht so aus:

```
<html>
<body>
<?php

	$inhalt = file_get_contents("test.txt");
	file_put_contents("test.txt", $inhalt .= "eine neue Zeile Text\n");
	$inhalt = file_get_contents("test.txt");
	echo "$inhalt";
	
?>
</body>
</html>
```

hier gibt er mir aber nur den bereits bestehenden text aus und schreibt nix in die datei
wie kann ich dem php script denn die berechtigungen geben die es braucht um in die datei zu schreiben?

die sache mit der Datenbank wird wohl nix da mysql zwar installiert ist mir aber keine verbindung über navicat gestattet und ich so keinen Benutzer anlegen kann
habe schon bind 127.0.0.1 raus genommen aber die haben wohl eine sperre drinne, da mysql schon vorinstalliert war und für etwas anderes benötigt wird
und als root will ich das nun wirklich nicht laufen lassen xD


----------



## tuxedo (20. Feb 2012)

Probier's mal hiermit:


```
<?php

$filename = 'names.txt';

$somecontent = $_GET["name"]."\n";

// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($filename)) {

    // Wir öffnen $filename im "Anhänge" - Modus.
    // Der Dateizeiger befindet sich am Ende der Datei, und
    // dort wird $somecontent später mit fwrite() geschrieben.
    if (!$handle = fopen($filename, "a")) {
        print "Kann die Datei $filename nicht öffnen";
        exit;
    }
                                      
    // Schreibe $somecontent in die geöffnete Datei.
    if (!fwrite($handle, $somecontent)) {
        print "Kann in die Datei $filename nicht schreiben";
        exit;
    }
                                                                  
    print "Fertig, in Datei $filename wurde $somecontent geschrieben";
                                                                      
    fclose($handle);
                                                          
} else {
    print "Die Datei $filename ist nicht schreibbar";
}

?>
```

Aufruf mit: 

http://mein.toller.server.de/meintollesverzeichnis/writeToFile.php?name=MaxMustermann

Wenn das Script die Datei nicht erstellen darf/kann, dann hast du ein Problem. Dann am besten den Hoster fragen oder besser gleich wechseln.

Kaum ein Hoster (es gibt allerdings ausnahmen) erlaufen den entfernten Zugriff auf die MySQL Datenbank. Vom PHP-Script aus (127.0.0.1) kommt man allerdings dran. Einen Benutzer bekommt man meiste vom Hoster "zugeteilt". Anlegen muss man da selten etwas. Und wenn doch: Der Hoster hat hier i.d.R. ein passendes Webinterface für. Und wenn nicht: phpmyadmin installieren....

Und wenn alle Stricke reissen: Anbieter wechseln... Gibt genug da draussen die fast nix kosten und keinerlei Probleme machen. 

- Alex


----------



## Vehementis (20. Feb 2012)

vielen dank für die Hilfe jetzt geht alles...
jedenfalls wenn ich den link so in den Browser eingebe...

jetzt muss ich allerdings noch eine letzte Frage stellen... ;(
wie schaffe ich es jetzt das Java diesen Link anspricht und das php script ausführt
also was trage ich jetzt hier ein:

```
public void writeToFile(String ncc)
    {
        try 
        {
            ????????
        } 
        catch (Exception ex) 
        {
            JOptionPane.showMessageDialog(null, "Die Clancode Listen Datei konnte nicht gefunden werden" + "\n" + "Eventuell bestehen Verbindungsprobleme");
        }
    }
```

hab schon gesucht aber leider nix dazu gefunden...:rtfm:
oh man ich hasse es so viel zu fragen sorry

EDIT:
ok hab eine variante gefunden wie es funktioniert...
(über InputStream)
wahrscheinlich nicht die richtige variante aber es geht xD

kann ich das print auch abfragen ob alles funktioniert hat?

EDIT EDIT:
Kann mir vielleicht jemand noch sagen warum sie die liste nicht im programm aktuallisieren lässt?
hab schon versucht die URL vor jeder abfrage neu zu definieren aber das bringt auch nix
erst wenn ich das Programm neu starte habe ich die aktuelle Liste


----------



## tuxedo (21. Feb 2012)

Hmm, hab eben meine Glaskugel befragt. Gibt aber keine Antwort. Stattdessen zeigt sie mir nur an: "Not enough input" ... :autsch:

Mal im ernst. Ohne zu wissen was du da fabriziert hast: Wie so da jemand wissen wo das Problem liegt?
Ich mein, du gehst ja auch nicht zu Fuß in eine Autowerkstatt und lieferst dem Werkstattmeister nur folgende spärliche Information: "Mein Fahrzeug ist kaputt, woran könnte es liegen?" ... Da wird dich der Werkstattmeister auch nur schräg anschauen, sich am Kopf kratzen und dich wieder heim schicken. 

- Alex


----------



## Vehementis (21. Feb 2012)

ja sorry dachte ich hätte es schonmal verlinkt... egal...
hier ist mein Code:

VampirSpielccListe.java

```
package vampirspielccliste;

import java.net.MalformedURLException;

public class VampirSpielccListe {

    public static void main(String[] args) throws MalformedURLException
    {
        new GUI();
    }
}
```

ccFile.java

```
package vampirspielccliste;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;

public class ccFile 
{
    
    private URL ccliste;
    private BufferedReader br;
    private BufferedWriter bw;
    public DefaultListModel dlim = new DefaultListModel();
    
    public ccFile() throws MalformedURLException
    {
        //getURL();
    }
    
    //private URL getURL() throws MalformedURLException
    //{
    //    ccliste = new URL("http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt");
    //    return ccliste;
    //}
    
    public String fileGetContent(int nr)
    {
        try{
        ccliste = new URL("http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt");
        }catch(Exception e){}
        String buffer = "";
        String line;
        int x = 0;
        dlim.clear();
        
        try 
        {
            br = new BufferedReader(new InputStreamReader(ccliste.openStream()));
            while((line = br.readLine()) != null)
            {
                if(x >= nr && x != 0)
                    dlim.addElement((x) + " |  " + line);
                x = x + 1;
            }
            br.close();
        }
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(null, "Die Clancode Listen Datei konnte nicht gefunden werden" + "\n" + "Eventuell bestehen Verbindungsprobleme");
        }
        return buffer;
    }
    
    
    public void writeToFile(String ncc)
    {
        try 
        {
            InputStream write = new URL("http://xxx.xx.xxx.xxx/vampirspiel/vampierspielccadd.php?name=" + ncc).openStream();
        } 
        catch (Exception ex) 
        {
            JOptionPane.showMessageDialog(null, "Die Clancode Listen Datei konnte nicht gefunden werden" + "\n" + "Eventuell bestehen Verbindungsprobleme");
        }
    }
    
}
```

GUI.java

```
package vampirspielccliste;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import javax.swing.*;

public class GUI extends JFrame 
{
    private ccFile file = new ccFile();
    private JTextField name = new JTextField(15);
    private JTextField cc = new JTextField(5);
    private JButton einfg = new JButton("Hinzufügen");
    private JButton akt = new JButton("Aktualisieren"); 
    private JList liste = new JList(file.dlim);
    private JLabel lname = new JLabel("Name: ");
    private JLabel lcc = new JLabel("cc: ");
    private JScrollPane sPane = new JScrollPane(liste);
    private JTextField nr = new JTextField(4);
    private JLabel lnr = new JLabel("Start Nr.:");
    private JLabel anzinsg = new JLabel();

    private JLabel by = new JLabel("       By Vehementis       ");
    private int nrs = 1;
    
    public GUI() throws MalformedURLException
    {
        file.fileGetContent(1);
        setLayout(new FlowLayout());
        setTitle("Vampir Spiel - CCs");
        setSize(240,550);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setResizable(false);
        
        nr.setText("1");
        anzinsg.setText("Es sind " + Integer.toString(file.dlim.getSize()) + " CC's in der Liste");
        
        add(lname);
        add(name);
        add(lcc);
        add(cc);
        add(einfg);
        add(sPane);
        add(anzinsg);
        add(akt);
        add(lnr);
        add(nr);
        add(by);
        
        liste.setVisibleRowCount(20);
        sPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        sPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        
        
        
        akt.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae) 
            {
                try
            {
                nrs = Integer.parseInt(nr.getText());
            }
            catch(Exception ex)
            {
                JOptionPane.showMessageDialog(null, "Bitte eine Startnummer eintragen!");
            }
                file.fileGetContent(nrs);
            }
        });
        
        einfg.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae) 
            {
                if(name.getText().isEmpty())
                    JOptionPane.showMessageDialog(null, "Bitte Namen eintragen");
                else if(cc.getText().isEmpty())
                    JOptionPane.showMessageDialog(null, "Bitte CC eintragen");
                else if(cc.getText().length() != 6)
                {
                    JOptionPane.showMessageDialog(null, "Bitte CC überprüfen");
                }
                else 
                {   
                    file.fileGetContent(1);
                    int i = 0;
                    int z = 0;
                    while(i < file.dlim.getSize() && z != -1)
                    {
                    
                        if(file.dlim.get(i).toString().startsWith(cc.getText().toString().toUpperCase(),( file.dlim.get(i).toString().lastIndexOf("|") + 3 )))
                        {
                            z = -1;
                            JOptionPane.showMessageDialog(null, "Der CC ist bereits eingetragen!\n(an Position: " + (i+1) + " )");
                        }
                        i = i + 1;
                        
                    }
                    if(z != -1)
                    {
                        int uber = JOptionPane.showConfirmDialog(null, "Sind die Angaben Richtig?\nName: " + name.getText() + "\nCC: " + cc.getText().toUpperCase());
                        if(uber == 0)
                        {
                            if(name.getText().length()<=15)
                            {
                                file.writeToFile(cc.getText().toUpperCase() + "%20-%20" + name.getText());
                            }
                            else
                            {
                                file.writeToFile(cc.getText().toUpperCase() + "%20-%20" + name.getText().substring(0, 15));
                            }
                            einfg.setEnabled(false);
                            name.setText("");
                            cc.setText("");
                            file.fileGetContent(1);
                            JOptionPane.showMessageDialog(null, "Herzlichen Glückwunsch\nSie stehen an Position: " + (file.dlim.getSize()));
                            anzinsg.setText("Es sind " + Integer.toString(file.dlim.getSize()) + " CC's in der Liste");
                        }
                    }
                }
            }
        });
    }      
}
```

normalerweiße sollte er aktuallisieren beim Start, bevor und nachdem ein wert in die liste geschrieben wird und wenn der Aktualisieren button gedrückt wird


----------



## tuxedo (21. Feb 2012)

WriteToFile kannst du exakt so machen wie dein filegetContent... nur die URl sieht dann anders aus.

Mal davon abgesehen sehe ich so auf die schnelle keinen Bug, und das Sample lässt sich hier auch nicht starten da der Code nicht vollständig ist. Von daher: Mach dir den Debugger deiner IDE zum Freund und geh auf die Suche nach dem Fehler. Denn dafür sind debugger da. 

- Alex


----------



## Vehementis (21. Feb 2012)

ja ok ich werde mal gucken...

wieso soll der code nicht vollständig sein?
das ist alles was ich im Programm habe 
bei mir läuft es exat so mit dem code in den einzelnen .java files nicht mehr und nicht weniger

EDIT:

so hab mal den Debugger laufen lassen aber der bringt mich auch nicht weiter

VampirSpielccListe (jws-debug)

```
init:
Deleting: C:\Users\Felix\Documents\NetBeansProjects\VampirSpielccListe\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\Felix\Documents\NetBeansProjects\VampirSpielccListe\build\built-jar.properties
compile:
Nothing to copy.
To run this application from the command line without Ant, try:
javaws "C:\Users\Felix\Documents\NetBeansProjects\VampirSpielccListe\dist\launch.jnlp"
jnlp:
sign-jars:
generate-jnlp:
Copying 1 file to C:\Users\Felix\Documents\NetBeansProjects\VampirSpielccListe\dist
Deleting: C:\Users\Felix\Documents\NetBeansProjects\VampirSpielccListe\dist\launch.jnlp_
generate-html-preview:
jar:
jws-debug:
BUILD SUCCESSFUL (total time: 33 seconds)
```

Debugger Console

```
Listening on javadebug
User program running
User program finished
```


----------



## tuxedo (21. Feb 2012)

Oh, Sorry. Hab da beim schnellen durchblättern tatsächlich eine Klasse übersehen. Dennoch: Der Debugger ist dein Freund ;-)


----------



## Vehementis (21. Feb 2012)

hab die Aussage des Debuggers oben hinzugefügt^^
nicht gedacht das du so schnell bist

EDIT:
normalerweiße würde ich sagen naja sollen es die leute halt neu starten um die aktuelle Liste zu bekommen...
nur das problem ist dass das Programm überprüfen muss ob der code schon in der liste steht das sich keiner 2 mal einträgt...
so wie es zz ist kann man das Programm einfach x mal gleichzeitig starten und sich somit auch x mal eintragen weil es nur beim start die Aktuelle Liste holt


----------



## Vehementis (21. Feb 2012)

ich hab jetzt mal folgendes versucht:
 [JAVA=30]
    public String fileGetContent(int nr)
    {
        JOptionPane.showMessageDialog(null, "GetContent Start" );
        try{
        ccliste = new URL("http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt");
        }catch(Exception e){}
        String buffer = "";
        String line;
        int x = 0;
        dlim.clear();

        try 
        {
            br = new BufferedReader(new InputStreamReader(ccliste.openStream()));
            while((line = br.readLine()) != null)
            {
                if(x >= nr && x != 0)
                    dlim.addElement((x) + " |  " + line);
                    JOptionPane.showMessageDialog(null, line );
                x = x + 1;
            }
            br.close();
        }
[/code]

dadurch bekomme ich eine rückmeldung sobald GetContent aufgerufen wird und bei jeder zeile die es liest

wenn ich beim programmstart 13 einträge habe liest es auch alle 13
wenn ich dann einen Hinzufüge wird es ja wieder aufgerufen es zählt aber wieder nur bis 13 
das selbe wenn ich auf aktuallisieren klicke
erst wenn ich das Programm neu öffne zählt es bis zum 14.

ich hab das JOptionPane auch mal hinter das while gesetzt und line ist wirklich leer...

genauso ist es andersrum
wenn ich das Programm öffne und bei der Liste auf dem Server von hand die hälfte lösche werden mir die Einträge trozdem noch angezeigt


----------



## Vehementis (21. Feb 2012)

Okey aufgepasst jetzt wird es ganz kurios…
Also wenn ich das Programm so wie ich es jetzt habe auf die Webseite zum Webstarter Hochlande…
Dan klicke ich da auf Launch und wähle im Fenster nicht Speichern sonder Ausführen und das Programm mach den üblichen Fehler…
Wähle ich nun speichern und mach im Download Fenster zum öffnen Doppelklick macht es den Fehler auch
Wenn ich nun aber den Download Ordner öffne und das Programm dort mit doppelklick starte funktioniert alles einwandfrei… :autsch:
:bahnhof:

EDIT
Bei meinem Vater auf dem PC geht es auch so nicht


----------



## Vehementis (21. Feb 2012)

hab jetzt mal java konsoloe + logging eingeschaltet und folgendes Ergebnis bekommen:

Ausführen aus meinen Downloads Ordner (Funktioniert Perfect)

```
Detected from bootclasspath: C:\\Program Files\\Java\\jre7\\lib\\deploy.jar
Trace-Ebene auf 5 (alle) setzen ... abgeschlossen.
network: Verbindung von http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt mit Proxy=DIRECT wird hergestellt
network: Verbindung von socket://xxx.xx.xxx.xxx:80 mit Proxy=DIRECT wird hergestellt
network: Verbindung von http://xxx.xx.xxx.xxx/vampirspiel/vampierspielccadd.php?name=TEST27%20-%20testname mit Proxy=DIRECT wird hergestellt
network: Verbindung von http://xxx.xx.xxx.xxx/vampirspiel/VampirSpielccs.txt mit Proxy=DIRECT wird hergestellt
```

Beim Ausführen der heruntergeladenen Datei über das Download Fenster und beim direkten ausführen auswählen bekomme ich folgendes (Funktioniert nicht)

```
Trace-Ebene auf 5 (alle) setzen ... abgeschlossen.
network: Cacheeintrag nicht gefunden [URL: http://xxx.xx.xxx.xxx/vampirspiel/vampierspielccadd.php?name=TEST28%20-%20testname, Version: null]
network: Verbindung von http://xxx.xx.xxx.xxx/vampirspiel/vampierspielccadd.php?name=TEST28%20-%20testname mit Proxy=DIRECT wird hergestellt
network: Verbindung von socket://xxx.xx.xxx.xxx:80 mit Proxy=DIRECT wird hergestellt
```

nun ist die Frage was ist die Ursache das es den Cacheeintrag nicht findet...
hoffe das hilft euch und somit auch mir weiter xD

wenn ich Thread Stack ausgeben lasse ist es bei der Funktionierenden Version einfach "null"
bei der nich Funktionierenden:

```
----------------------------------------------------
Thread-Stack ausgeben...
----------------------------------------------------
2012-02-21 22:07:39
Full thread dump Java HotSpot(TM) Client VM (22.0-b10 mixed mode, sharing):

"D3D Screen Updater" daemon prio=8 tid=0x062bd000 nid=0x1570 in Object.wait() [0x0835f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x29644d20> (a java.lang.Object)
	at sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
	- locked <0x29644d20> (a java.lang.Object)
	at java.lang.Thread.run(Unknown Source)

"CacheCleanUpThread" daemon prio=6 tid=0x062bc000 nid=0xec4 in Object.wait() [0x07c4f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4378> (a com.sun.deploy.cache.CleanupThread)
	at java.lang.Object.wait(Object.java:503)
	at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
	- locked <0x295b4378> (a com.sun.deploy.cache.CleanupThread)

"CacheMemoryCleanUpThread" daemon prio=6 tid=0x062bbc00 nid=0x13dc in Object.wait() [0x07d0f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4468> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	- locked <0x295b4468> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

"TimerQueue" daemon prio=6 tid=0x0629b800 nid=0x13e0 waiting on condition [0x077ef000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x295b44f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(Unknown Source)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
	at java.util.concurrent.DelayQueue.take(Unknown Source)
	at javax.swing.TimerQueue.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

"ConsoleTraceListener" daemon prio=6 tid=0x0627f800 nid=0x734 in Object.wait() [0x078ef000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b45d8> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
	at com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source)
	- locked <0x295b45d8> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)

"AWT-EventQueue-1" prio=6 tid=0x061c3400 nid=0x1394 waiting on condition [0x06ede000]
   java.lang.Thread.State: RUNNABLE
	at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacksImpl(Native Method)
	at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacks(Unknown Source)
	at com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$2.actionPerformed(Unknown Source)
	at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source)
	at javax.swing.SwingUtilities.notifyAction(Unknown Source)
	at javax.swing.JComponent.processKeyBinding(Unknown Source)
	at javax.swing.KeyboardManager.fireBinding(Unknown Source)
	at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
	at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
	at javax.swing.JComponent.processKeyBindings(Unknown Source)
	at javax.swing.JComponent.processKeyEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

"DestroyJavaVM" prio=6 tid=0x0049bc00 nid=0x11a8 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Javaws Secure Thread" daemon prio=6 tid=0x061ba000 nid=0xf14 in Object.wait() [0x06d6f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4878> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:503)
	at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
	- locked <0x295b4878> (a java.lang.Object)

"AWT-EventQueue-0" prio=6 tid=0x061b9400 nid=0x1600 waiting on condition [0x06a8f000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x295b48f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(Unknown Source)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
	at java.awt.EventQueue.getNextEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

"AWT-Windows" daemon prio=6 tid=0x061b8c00 nid=0x13ac runnable [0x00acf000]
   java.lang.Thread.State: RUNNABLE
	at sun.awt.windows.WToolkit.eventLoop(Native Method)
	at sun.awt.windows.WToolkit.run(Unknown Source)

"AWT-Shutdown" prio=6 tid=0x06178400 nid=0x420 in Object.wait() [0x06d1f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4a58> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:503)
	at sun.awt.AWTAutoShutdown.run(Unknown Source)
	- locked <0x295b4a58> (a java.lang.Object)
	at java.lang.Thread.run(Unknown Source)

"Java2D Disposer" daemon prio=10 tid=0x06177c00 nid=0x17c8 in Object.wait() [0x0654f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4ae8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	- locked <0x295b4ae8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	at sun.java2d.Disposer.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

"traceMsgQueueThread" daemon prio=6 tid=0x06129000 nid=0x17ac in Object.wait() [0x0669f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x294ee2e8> (a java.util.ArrayList)
	at java.lang.Object.wait(Object.java:503)
	at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source)
	- locked <0x294ee2e8> (a java.util.ArrayList)
	at java.lang.Thread.run(Unknown Source)

"Service Thread" daemon prio=6 tid=0x00c3f400 nid=0x1278 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=10 tid=0x00c3d800 nid=0x1074 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x00c3c400 nid=0x16b0 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x00c39400 nid=0x17d4 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x00c11c00 nid=0x1444 in Object.wait() [0x0594f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b4d88> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	- locked <0x295b4d88> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

"Reference Handler" daemon prio=10 tid=0x00c0d800 nid=0x1040 in Object.wait() [0x00d6f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x295b42f8> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:503)
	at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
	- locked <0x295b42f8> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x00c0c000 nid=0x314 runnable 

"VM Periodic Task Thread" prio=10 tid=0x06104c00 nid=0xb08 waiting on condition 

f8> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x00c0c000 nid=0x314 runnable 

"VM Periodic Task Thread" prio=10 tid=0x06104c00 nid=0xb08 waiting on condition 


----------------------------------------------------
Fertig.
```

keine ahnung ob das eine Bedeutung hat ich poste es einfach mal...


----------



## Vehementis (22. Feb 2012)

hab es nochmal auf meinem Laptop probiert...
hier Funktioniert das Programm egal wie ich es ausführe...

alle 3 getesteten PCs laufen unter Windows 7 
die beiden Desktop PCs 64Bit der Laptop 32Bit


----------

