Probleme mit dem Erstellen und Importieren von Packages

celdri

Mitglied
Hallo zusammen

Leider habe ich eine vermutlich sehr dämliche Frage, aber ich habe jetzt ewig rumgelesen und komme nicht auf meinen Fehler. Für ein Programm von mir wollte ich eine eigene Klasse importieren und verwenden, aber das klappt leider nicht. Um zu schauen, was ich falsch mache, habe ich mir das einfachste Beispiel aus der Insel genommen und es damit getestet. Ich habe mir also das Programm Player

[CODE lang=java]package insel;

class Player {
String name;
String item;
}
[/CODE]

und Playground

Java:
package insel;

import insel.Player;

class Playground {

  public static void main( String[] args ) {
    Player p = new Player();
    p.name = "Mutiger Manfred";
    p.item = "Schlips";
   
    System.out.printf( "%s nimmt einen %s mit.", p.name, p.item );
  }
}

in den Ordner /home/celdrion/Dokumente/java/src/com/cel/insel/ gespeichert und dann erst Player.java und dann Playground.java kompiliert. Aber bei Playground.java gibt es immer eine Fehlermeldung

Code:
error: cannot find symbol
import insel.Player;
            ^
  symbol:   class Player
  location: package insel
Playground.java:8: error: cannot find symbol
    Player p = new Player();
    ^
  symbol:   class Player
  location: class Playground
Playground.java:8: error: cannot find symbol
    Player p = new Player();
                   ^
  symbol:   class Player
  location: class Playground
3 errors

Und ich habe versucht ohne import (da ja gleiches Packages) mit ganzem Pfad im import statement, mit com.cel.insel.Player... aber nichts funktioniert. Auch habe ich natürlich versucht, die Dateien nach dem Download in der originalen Version und der originalen Dateistruktur zu kompilieren.

Kann mir bitte jemand sagen, was mein Fehler ist?

Danke und Gruss
Celdri
 
Wie übersetzt Du denn genau? Das hört sich jetzt so an, als ob Du die Dateien manuell mit dem java compiler übersetzen würdest ...

Also Du kannst im Verzeichnis /home/celdrion/Dokumente/java/src/com/cel beide Dateien gleichzeitig übersetzen:
javac insel/Player.java insel/Playground.java

Wenn Du einzeln übersetzt, dann muss die Reihenfolge stimmen und die Abhängigkeiten müssen gefunden werden. Das ginge z.B. mit der Angabe des classpath, so dass der Compiler die fertig übersetzte Player.class findet.
 
Ja, ich übersetze manuell mit javac. Dachte so zum Starten ist das vielleicht nicht verkehrt, Eclipse und andere nehmen einem so viel ab 🙂

Aber passt der Code sonst so oder mache ich sonst einen Fehler mit der Dateistruktur?
 
Prinzipiell sollte es so passen.

Unnötig ist der Import, denn beide Klassen sind in dem gleichen Package. Da benötigt man keinen import.
 
Liege ich richtig in der Annahme, dass das Problem darin besteht, das er vom Ordner insel aus javac ausführt und eben das Package insel nicht im ordner insel liegt?
 
Liege ich richtig in der Annahme, dass das Problem darin besteht, das er vom Ordner insel aus javac ausführt und eben das Package insel nicht im ordner insel liegt?

Auch, wenn jetzt ein bisschen vergangen ist, habe ich mittlerweile ein bisschen mehr testen können. Ich nutze jetzt auch eine IDE und damit funktioniert das problemlos. Es scheint also tatsächlich daran zu liegen wie und in welcher Reihenfolge die Dateien mit javac kompiliert werden, aber ich habe das nicht weiter versucht.
 
Es scheint also tatsächlich daran zu liegen wie und in welcher Reihenfolge die Dateien mit javac kompiliert werden, aber ich habe das nicht weiter versucht
Die Reihenfolge sollte hier egal sein, wenn du erst Playground compilierst, wird Player eben direkt mit compiliert, wenn du erst Player compilierst, hast du ja die nötige Klasse für Playground.
Es kann eigentlich nur daran liegen, dass du aus dem Insel Folder compiliert hast. Die Package angaben sind immer relativ zum root Verzeichniss deines Projektes.
 

Neue Themen


Zurück
Oben