Wie kann ich eigene Pakete nutzen?

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Ich habe einen Ordner namens "Fahrzeuge" erstellt und in diesem möchte ich nun zwei Klassen ("PKW" und "LKW") anlegen. Noch nicht besonders originell, aber es soll in erster Linie zu Übungszwecken dienen.

Doch wie kann ich nun beispielsweise in einer neuen Datei "Porsche" auf die beiden Klassen des Pakets "Fahrzeuge" zugreifen?
 
package namen schreibt man klein.
ansonsten entweder dadurch dass du
Code:
package xyzblahblahblah;

import fahrzeuge.*;
in deiner Porsche-klasse schreibst, oder mit
Code:
fahrzeuge.PKW a= new fahrzeuge.PKW;
explizit den namen des packages angibst.

ansonsten ist google dein bester freund.
 
Müssen sich die importierten Klassen denn immer in einem bestimmten Verzeichnis befinden?

Code:
import fahrzeuge.*;

Wie kann der Compiler feststellen, wo sich das Paket befindet?

Danke für deine Antwort!
 
Code:
import fahrzeuge.*

impliziert, das sich die Datein in dem Package in einem übergeorndeten Ordner namens "fahrzeuge" befinde, oder in einem solchen Ordner, innerhalb eines JAR's.
fahrzeuge liegt dabei auf oberster Ebene

Wo er diese klassen findet hängt davon ab, wo du ihn suchen lässt (ClassPath)
 
Mittlerweile werden alle Dateien kompiliert und das Paket befindet sich nun in einem anderen Verzeichnis; doch tritt beim Ausführen immer noch ein Fehler auf. Zurzeit sieht die Struktur so aus:

C:\Programme\Java\jdk1.6.0_11\bin\konto
-> Konto.class
-> Konto.java

Code:
package konto;

public class Konto {
  private double kontostand;
  public void einzahlen(double summe) {
    kontostand += summe;
  }
  public double anzeigen() {
    return kontostand;
  }
}

------------------------------------------------

C:\Programme\Java\jdk1.6.0_11\bin\applications
-> MeinKonto.class
-> MeinKonto.java

Code:
import konto.Konto;

public class MeinKonto {
  public static void main(String args[]) {
    Konto perKonto = new Konto();
    perKonto.einzahlen(100);
    perKonto.einzahlen(120);
    System.out.print(perKonto.anzeigen());
  }
}

C:\Programme\Java\jdk1.6.0_11\bin\applications>java MeinKonto
Exception in thread "main" java.lang.NoClassDefFoundError: konto/Konto
at MeinKonto.main(MeinKonto.java:5)
Caused by: java.lang.ClassNotFoundException: konto.Konto
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more
 
Das ganze ins jdk/bin zu packen ist etwas daneben, aber egal...

Verschiebe einfach das konto-Verzeichnis (natürlich mit Inhalt) nach application/konto, dann sollte es mit
C:\Programme\Java\jdk1.6.0_11\bin\applications>java -cp . MeinKonto
funzen.

Oder lade dir von www.eclipse.org oder www.netbeans.org eine IDE runter, dann braucht dich sowas erst mal nicht zu kümmern.
 
ich find auch der meinung, dass man auf eine ide umsteigen soll, wenn man anfangt mit packages und fremden libs zu arbeiten...

ich würde eclipse empehlen...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben