Java Probleme mit der IDE (mal wieder)

datalukas

Captain
Registriert
Dez. 2009
Beiträge
3.628
Hallo liebe Community,

ich habe mal wieder Probleme mit Java. Irgendwie will das bei mir nicht richtig funktionieren.
Als erstes wollte ich mit Eclipse programmieren.
Das hat nicht funktinioniert. Mehr dazu hier:
https://www.computerbase.de/forum/threads/compiler-fehler.1040618/page-2
Dann habe ich Netbeans ausprobiert, das am Anfang auch nicht funktioniert hat, irgendwann aber doch. Jetzt wollte ich es mal wieder ausprobieren und dann das. Einfach einen Quellcode kopiert (aus Java ist auch eine Insel) und eingefügt, am Anfang, um sicherzugehen, dass alles richtig ist:

Code:
package test;

public class Test {

    public static void main(String[] args) {
     int number = (int) (Math.random() * 5 + 1);

    System.out.println( "Welche Zahl denke ich mir zwischen 1 und 5?" );
    int guess = new java.util.Scanner( System.in ).nextInt();

    if ( number == guess )
      System.out.println( "Super getippt!" );

    System.out.println( "Starte das Programm noch einmal und rate erneut!" );
    }
}

Wenn ich jetzt auf Run klicke oben, steht unten bei Output einfach nur:


BUILD SUCCESSFUL (total time: 2 seconds)

Der Text kam aber nicht und eingeben konnte ich auch nichts.
Installiert ist bei mir Java SE 7 Udpate 7 32 und 64 Bit (da der Browser Chrome nur 32 Bit nutzen kann) und das JDK 7 Update 7.
Wir machen Java nächstes Jahr in der Schule und deswegen wollte ich mir das mal anschauen, aber es will einfach nicht gehen. javac -version in der Komandozeile geht auch z.B. nach dem letzten Update von Java auch nicht mehr. Ging früher schon mal nicht, da habe ich es nach längerem Probieren mit den Umgebungsvariablen geschafft.
Aber zurück zum Thema:
Was kann ich jetzt tun. Muss ich irgendwo die Java Se oder JDK verändern und wenn ja, wie geht das bei Netbeans.
Gruß
Datalukas
 
Hast du mal in der Konsole/dem Output-Fenster von NetBeans geschaut (kenne mich mit NB leider nicht aus)?
 
Ja, wie gesagt:
Wenn ich jetzt auf Run klicke oben, steht unten bei Output einfach nur:

Code:
BUILD SUCCESSFUL (total time: 2 seconds)

Der Text kam aber nicht und eingeben konnte ich auch nichts.
 
Ich hätte einmal einen ganz simplen Lösungsvorschlag:

Ich nehme an, dass du auf den großen Run Button geklickt hast. Probier doch einmal Rechtsklick auf das Projekt und wähle dann Run über das Kontextmenü.

Mir ist es nämlich auch einmal passiert, dass ich die Ausgabe gar nicht nachvollziehen konnte. Dabei lag es einfach daran, dass das falsche Projekt gestartet worden ist ;)
 
Hi,

also eine Überlegung wäre mal ohne "package test;" zu kompilieren.
Ich habe Exlipse Portabel von USB-Stick laufend mit JDK und kann dir daher gerne helfen bei der Einrichtung.
 
javac -version in der Komandozeile geht auch z.B. nach dem letzten Update von Java auch nicht mehr.
Das hört sich so an, als wäre Java nicht in der Path-Umgebungsvariable eingetragen.

Öffne mal eine Konsole (cmd) und tippe dort path ein. Dort sollte der Pfad zu Java drin stehen.
Steht es nicht drin, dann kannst du das so hinzufügen:
[WIN]+[PAUSE] -> Erweiterte Systemeinstellungen -> Erweitert -> Umgebungsvariablen -> unten path auswählen und bearbeiten
Danach muss eventuell der Rechner neugestartet werden, damit die Änderung übernommen wird.
 
Hat, dann geklappt, als ich das mal mit Rechtsklick über dem Projekt gedebuggt habe.
Hoffe mal, es gibt jetzt nicht wieder Probleme...
Übrigens sagt er nach jedem Start, dass der das JDK nicht finden kann und fragt, ob er die standardmäßige Version nützen soll.
Aber Vielen Dank für die Hilfe und javac geht jetzt auch wieder.
 
Und es gibt wieder Probleme.
Aus "Java ist auch eine Insel", Kapitel 3.5 Snake.
Code:
package test;

public class Test
{
  public static void main( String[] args )
  {
    java.awt.Point playerPosition = new java.awt.Point( 10, 9 );
    java.awt.Point snakePosition  = new java.awt.Point( 30, 2 );
    java.awt.Point goldPosition   = new java.awt.Point( 6, 6 );
    java.awt.Point doorPosition   = new java.awt.Point( 0, 5 );
    boolean rich = false;

    while ( true )
    {
      // Raster mit Figuren zeichnen

      for ( int y = 0; y < 10; y++ )
      {
        for ( int x = 0; x < 40; x++ )
        {
          Java.awt.Point p = new Java.awt.Point( x, y );
          if ( playerPosition.equals( p ) )
            System.out.print( '&' );
          else if ( snakePosition.equals( p ) )
            System.out.print( 'S' );
          else if ( goldPosition.equals( p ) )
            System.out.print( '$' );
          else if ( doorPosition.equals( p ) )
            System.out.print( '#' );
          else System.out.print( '.' );
        }
        System.out.println();
      }

      // Status feststellen

      if ( rich && playerPosition.equals( doorPosition ) )
      {
        System.out.println( "Gewonnen!" );
        break;
      }
      if ( playerPosition.equals( snakePosition ) )
      {
        System.out.println( "ZZZZZZZ. Die Schlange hat dich!" );
        break;
      }
      if ( playerPosition.equals( goldPosition ) )
      {
        rich = true;
        goldPosition.setLocation( –1, –1 );
      }

      // Konsoleneingabe und Spielerposition verändern

      switch ( new java.util.Scanner( System.in ).next().charAt( 0 ) )
      {
        case 'h' : playerPosition.y = Math.max(  0, playerPosition.y – 1 ); break;
        case 't' : playerPosition.y = Math.min(  9, playerPosition.y + 1 ); break;
        case 'l' : playerPosition.x = Math.max(  0, playerPosition.x – 1 ); break;
        case 'r' : playerPosition.x = Math.min( 39, playerPosition.x + 1 ); break;
      }

      // Schlange bewegt sich in Richtung Spieler

      if ( playerPosition.x < snakePosition.x )
        snakePosition.x--;
      else if ( playerPosition.x > snakePosition.x )
          snakePosition.x++;
      if ( playerPosition.y < snakePosition.y )
        snakePosition.y--;
      else if ( playerPosition.y > snakePosition.y )
        snakePosition.y++;
    } // end while
  }
}

Bei Zeile 50, sowie 61 und 63 steht jeweils "illegal character: \8211".
Das Beispiel ist auch wieder kopiert und wenn ich das break in neue Zeilen schreibe, funktioniert es auch nicht.
 
Ich nehme an, dass er auf der Seite ein anderes eventuell ähnlich aussehendes Zeichen, als die Standard Keyboardzeichen verwendet hat. Probier einfach einmal aus ob sich dadurch dass du die Zeilen per Hand abtippst der Fehler beheben lässt.

P.S. Die neue Next Line Zeichen bzw die Absätze im QuellCode sind sowieso nur für dich und werden vom Compiler weitestgehend ignoriert. Du könntest dein Programm also theoretisch auch nur in eine Zeile schreiben.
 
Zuletzt bearbeitet:
Nai hat recht. Das, was wie ein Minuszeichen aussieht, ist ein Gedankenstrich (für den Compiler ein himmelweiter Unterschied).
 
switch case mit strings geht doch auch erst ab java 7 oder nicht.. und nur so als tipp.. importiere mal die Point klasse dann sieht das auch nicht mehr so schrecklich aus weild u dann nur noch Point hinschreiben musst
 
datalukas schrieb:
ich habe mal wieder Probleme mit Java. Irgendwie will das bei mir nicht richtig funktionieren. Als erstes wollte ich mit Eclipse programmieren.
Das hat nicht funktinioniert. Mehr dazu hier: ...
Ich hab mir das mal durchgelesen. Bei dir war das Problem damals wohl, dass die Java Systemvariablen aus irgendeinem Grund gelöscht oder falsch waren. Wenn du zB. "Java" in die Konsole eingibst, muss eine Ausgabe kommen (Liste von Java.exe Parametern). Wenn da kommt "Befehl nicht gefunden" ist etwas sehr, sehr grundlegend falsch mit deinem System - dann braucht man gar nicht weitermachen.

Zunächst mal Grundlegendes:

- Du kannst so viele verschiedene Java Versionen installieren wie du willst
- Du musst eine alte auch nicht zwingend deinstallieren, außer sie enthält einen sicherheits.krt. Fehler
- Deinstallieren macht auch keinen großen Sinn, da Java nicht besonders groß ist
- In deiner Entwicklungsumgebung musst du dich eigentlich nicht darum kümmern
... Da das dort normalerweiße automatisch eingestellt wird

Der Fehler mit Eclipse bei dir war wohl, dass er überhaupt kein installiertes Java gefunden hat. Warum auch immer. Das hätte man leicht überprüfen können, indem man einfach mal in den Preferences nachgeschaut hätte.

Daher mein Tipp: Bevor du mit programmieren weitermachst, noch ein bisschen mehr mit den IDEs auseinandersetzen.
 
Zuletzt bearbeitet:
@F_GXdx Wenn ich Java in der Konsole eingebe, kommt auch eine Liste mit Parametern.
Aber Danke für die Tipps. :) Inwiefern soll ich mich denn noch mit der IDE auseinander setzen? Wenn ich weiß, wie man Projekte verwaltet und Programme zum Laufen lässt, reicht mir das eigentlich. Es wäre bloß recht interessant zu wissen, wie man dann ein Projekt "veröffentlicht" und zu einer direkt ausführbaren Datei macht (ohne java HalloWelt.class in der Konsole eingeben zu müssen).

Ich habe jetzt mal alles berücksichtigt und es war in der Tat ein Fehler mit den Minuszeichen.
Doch nun gibt es wieder ein anderes Problem:
Code:
import java.awt.Point;

public class Test {

    public static void main(String[] args) {
        Point playerPosition = new Point(10, 9);
        Point snakePosition = new Point(30, 2);
        Point goldPosition = new Point(6, 6);
        Point doorPosition = new Point(0, 5);
        boolean rich = false;

        while (true) {
            // Raster mit Figuren zeichnen

            for (int y = 0; y < 10; y++) {
                for (int x = 0; x < 40; x++) {
                    Point p = new Point(x, y);
                    if (playerPosition.equals(p)) {
                        System.out.print('&');
                    } else if (snakePosition.equals(p)) {
                        System.out.print('S');
                    } else if (goldPosition.equals(p)) {
                        System.out.print('$');
                    } else if (doorPosition.equals(p)) {
                        System.out.print('#');
                    } else {
                        System.out.print('.');
                    }
                }
                System.out.println();
            }

            // Status feststellen

            if (rich && playerPosition.equals(doorPosition)) {
                System.out.println("Gewonnen!");
                break;
            }
            if (playerPosition.equals(snakePosition)) {
                System.out.println("ZZZZZZZ. Die Schlange hat dich!");
                break;
            }
            if (playerPosition.equals(goldPosition)) {
                rich = true;
                goldPosition.setLocation(-1, -1);
            }

            // Konsoleneingabe und Spielerposition verändern

            switch (new java.util.Scanner(System.in).next().charAt(0)) {
                case 'h':
                    playerPosition.y = Math.max(0, playerPosition.y - 1);
                    break;
                case 't':
                    playerPosition.y = Math.min(9, playerPosition.y + 1);
                    break;
                case 'l':
                    playerPosition.x = Math.max(0, playerPosition.x - 1);
                    break;
                case 'r':
                    playerPosition.x = Math.min(39, playerPosition.x + 1);
                    break;
            }

            // Schlange bewegt sich in Richtung Spieler

            if (playerPosition.x < snakePosition.x) {
                snakePosition.x--;
            } else if (playerPosition.x > snakePosition.x) {
                snakePosition.x++;
            }
            if (playerPosition.y < snakePosition.y) {
                snakePosition.y--;
            } else if (playerPosition.y > snakePosition.y) {
                snakePosition.y++;
            }
        } // end while
    }
}

Gleich in der ersten Zeile steht:
Cannot find Symbol

Nun habe ich mal etwas unüberlegt auf den Verbesserungsvorschlag, eine Klasse point in Java.awt zu erstellen, geklickt, ich hoffe mal, das hat nicht geschadet, geholfen hat es jedenfalls nicht, was wohl klar war.
 
1) Zu der Frage, wie du dein Programm veröffentlichen kannst:

Gute Frage!

Die Antwort ist: Willst du ein von dir entwickeltes Java Programm "verteilen", musst du es in eine JAR-Datei exportieren (JAR = Java ARchiv).

Jetzt fragst du dich vielleicht, warum auch viele Java-Programme über eine EXE-Datei gestartet werden. Die Antwort ist: Grundsätzlich ist das nicht nötig und höchst wahrscheinlich gibt es auch einen Weg, sie über die zugehörige JAR zu starten!

Tatsächlich wird zb. Eclipse mit Eclipse.exe gestartet, diese ist aber "im Wesentlichen" nur ein kleines Programm, dessen mehr oder weniger einzige Funktion es ist, die eigentliche JAR aufzurufen (bei Eclipse meistens "startup.jar" oder ähnlich) und ein paar Parameter zu übergeben (wie zB in der Console: java meinProgramm.jar -starteMitBesonderemGUI). Bei Eclipse sind diese Parameter zum Beispiel Konfig-Daten und Nutzereinstellungen.

Eine JAR Datei kann unter Windows mit Doppelklick gestartet werden, wenn Java installiert ist (also gleicher Komfort wie eine EXE).

2) Zu deinem import Problem:

Ich habe nachgesehen. Die Klasse java.awt.Point liegt in der Datei: "rt.jar". Diese ist eine essentielle Java Library, die bei der Java-Installation daher auch mitinstalliert wird und die eine Menge wichtige Dinge enthält und normalerweiße automatisch verfügbar sein müsste, wenn man in einer vernünftigen IDE ein neues Java-Projekt anlegt.

Warum das bei dir nicht der Fall ist, ist rätselhaft. Eventuell hast du in deiner IDE bei "Neues Projekt" einen falschen Projekt-Typ angewählt, womit die Standard-Libraries nicht automatisch der Projektkonfiguration hinzugefügt wurden.

Du musst in einem Projekt also die Library "rt.jar" hinzufügen. Wie das geht, ist je nach IDE unterschiedlich. Besser wäre es vermutlich, nochmal ein neues Java-Projekt anzulegen und den Quelltext herüberzukopieren.

Ich habe dir Mal Screenshots von Eclipse gemacht, wie es bei mir aussieht.

3) Pro-Tip:
Wenn du es noch genauer wissen willst, einfach Informatik studieren :D
 

Anhänge

  • Unbenannt-1.png
    Unbenannt-1.png
    16,4 KB · Aufrufe: 206
  • Unbenannt-2.png
    Unbenannt-2.png
    50,1 KB · Aufrufe: 219
  • Unbenannt-3.png
    Unbenannt-3.png
    147,4 KB · Aufrufe: 224
Zuletzt bearbeitet:
klomann83 schrieb:
switch case mit strings geht doch auch erst ab java 7 oder nicht..
Ich seh' da keinen switch auf String, nur auf char...
 
Übrigens sagt er nach jedem Start, dass der das JDK nicht finden kann und fragt, ob er die standardmäßige Version nützen soll.

Dann setze doch den Pfad in den Einstellungen von Netbeans zum JDK (oder besser gesagt zu javac)! Damit dürften sich auch einige andere Probleme lösen.
 
Vielen Dank, jetzt hat es geklappt. Eigentlich gab es die Datei rt.jar aber schon im Projekt davor.
@ Helios co. Habe nachgeschaut, da ist eh die aktuellste Version eingestellt.
 
Zurück
Oben