Java Robot NullPointerException

MCStreetguy

Stammuser
Hallo Leute...

Ich hab ein Problem :/
Ich habe in Java per Robot versucht die Maus Position auf den Bildschirmmittelpunkt zu setzen...

Code:
        try{
            Robot robot = new Robot();
        }
        catch(AWTException e)
        {
            System.out.println("");
            System.err.println("ERROR!!");
            System.err.println("java.lang.Object");
            System.err.println("-> java.lang.Throwable");
            System.err.println("   -> java.lang.Exception");
            System.err.println("      -> java.awt.AWTException");
            System.exit(-1);
        }
        finally
        {
            System.out.println("Robot created successfully...");
        }
        
        //Bildschirmauflösung abfragen
        int displayX = dm.getWidth();
        int displayY = dm.getHeight();
        System.out.println("Display: "+displayX+" "+displayY);
        //Bildschirmmittelpunkt berechnen
        int middleX = displayX / 2;
        int middleY = displayY / 2;
        System.out.println("Display middle at: "+middleX+" "+middleY);
        //Mausposition auf Mittelpunkt setzen
        try{
            robot.mouseMove(640,512);
        }
        catch(NullPointerException i)
        {
            System.out.println("");
            System.err.println("ERROR!!");
            System.err.println("java.lang.Object");
            System.err.println("-> java.lang.Throwable");
            System.err.println("   -> java.lang.Exception");
            System.err.println("      -> java.lang.RuntimeException");
            System.err.println("         -> java.lang.NullPointerException");
            System.exit(-1);
        }
        finally
        {
            System.out.println("Robot Command executed successfully...");
        }

Die Konsole sieht dann immer folgendermaßen aus:

Robot created successfully...
Display: 1280 1024
Display middle at: 640 512

---

ERROR!!
java.lang.Object
-> java.lang.Throwable
-> java.lang.Exception
-> java.lang.RuntimeException
-> java.lang.NullPointerException

Was mache ich falsch? Und vor allem wie kann ich das Problem lösen?

Danke schonmal, MCStreetguy
 

Tsjuder

Stammuser
Folgende Zeilen hast du da stehen:
Code:
        try{
             Robot robot = new Robot();
         }
und
Code:
        try{
             robot.mouseMove(640,512);
         }

Bin mir gerade nicht zu 100% sicher, aber kann das sein, dass du nochmal irgendwo "Robot robot" stehen hast?
Meiner Meinung nach definiert der erste Codeschnipsel eine Variable robot vom Typen Robot, überschreibt aber die alte Variable "robot", d.h. deine Zuweisung mit "new Robot();" ist nur innerhalb des oberen try Scopes sichtbar.
Lösung wäre also: Deklariere die Variable über den try Block mit "Robot robot;" und schreibe in den try Block nur noch "robot = new Robot();"
 

CDW

Moderator
Mitarbeiter
Zudem: Normalerweise ist es kein guter Stil, eine Exception abzufangen aber nicht zu behandeln - die Umstellung erfordert aber eine etwas andere Programmlogik. Ggf. kann man die Exceptions zumindest loggen, so dass man ausführliche Fehlermeldungen bekommt
Zumal es nicht ganz klar ist, wozu
Code:
System.err.println("ERROR!!");
System.err.println("java.lang.Object");
System.err.println("-> java.lang.Throwable");
...
gut sein soll - hier vielleicht eher sowas nutzen:
Code:
System.err.println("Stacktrace "+ee.toString());
oder 
e.printStackTrace();
bzw. http://openbook.galileocomputing.de/java7/1507_20_001.html statt "printen".
damit lässt sich auch deutlich mehr anfangen ;)

Weiterhin, falls man nicht gerade mit Notepad/GEdit programmiert, bietet es sich an, den Fehler zu Debuggen. Dazu setzt man die IDE (z.B Eclipse) in die Debugging-Ansicht, platziert an den "Problemstellen" Breakpointer und kann diese dann schrittweise durchgehen und sich dabei auch gleich die Werte der Variablen anzeigen lassen.
Java Debugging with Eclipse - Tutorial
Eclipse debugger Workshop - YouTube
 
S

Shlyakh

Guest
Code:
[FONT=&quot]try{[/FONT]
  [FONT=&quot]            Robot robot = new Robot();[/FONT]
  [FONT=&quot]}
[/FONT]


Ich pflege es wie folgt zu schreiben:

Code:
  Robot robot = null; 

try{    

        robot = new Robot();        

}
 
Oben