Java Pakete Import einfach erklärt: So organisierst du Code
Java Pakete und Imports einfach erklärt für Azubis, Studenten und Berufseinsteiger. Ordnung im Java-Code.
By Marcel Schmidtpeter 30 Jul 2026
Dein Java-Projekt wächst. Du hast dutzende Klassen erstellt und plötzlich verlierst du den Überblick. Alles liegt in einem Ordner, Klassennamen kollidieren und du weißt nicht mehr, wo was gehört. Genau hier helfen Pakete (Packages) - sie strukturieren deinen Code wie Ordner auf deinem Computer. Und mit Imports holst du genau die Klassen rein, die du brauchst.
Egal, ob du gerade deine erste Umschulung machst, im Informatik-Studium sitzt oder als Quereinsteiger in dein erstes IT-Projekt startest - ohne Verständnis für Java Pakete Import wird dein Code unübersichtlich und fehleranfällig.
Was sind Pakete in Java?
Pakete in Java sind Container, die zusammengehörige Klassen und Interfaces gruppieren. Stell dir vor, du hast einen großen Aktenschrank. Jede Schublade ist ein Paket - in der einen liegen alle Rechnungen, in der anderen alle Verträge. So behältst du den Überblick.
Technisch gesehen entspricht jedes Paket einem Verzeichnis (Ordner) auf deiner Festplatte. Die Paketstruktur spiegelt sich direkt in deiner Ordnerstruktur wider. Hast du das Paket `com.firma.projekt`, dann liegt das in einem Ordnerpfad `com/firma/projekt`.
Es gibt zwei Arten von Paketen:
Art | Beschreibung | Beispiel |
Built-in Packages | Gehören zur Java-Standardbibliothek | `java.util`, `java.io` |
User-defined Packages | Erstellt du selbst | `com.meinprojekt.model` |
Merke: Pakete verhindern Namenskonflikte. Du kannst eine Klasse `Utils` in `projektA.utils` und eine andere `Utils` in `projektB.utils` haben - beide koexistieren problemlos.
Wie deklarierst du ein Paket in Java?
Die Paketdeklaration steht immer als erste Anweisung in deiner Java-Datei. Vorher darf nur ein Kommentar stehen.
// Datei: Rechnung.java im Ordner com/firma/rechnung/
package com.firma.rechnung;
public class Rechnung {
private String rechnungsNummer;
private double betrag;
public Rechnung(String rechnungsNummer, double betrag) {
this.rechnungsNummer = rechnungsNummer;
this.betrag = betrag;
}
public double getBetrag() {
return betrag;
}
}Das Schlüsselwort `package` teilt Java mit: "Diese Klasse gehört zu diesem Paket." Die Konvention für Paketnamen ist kleingeschrieben, durch Punkte getrennt. Oft verwendet man die umgekehrte Domain der Firma - `de.firma.projekt` statt `com.firma.projekt`, wenn die Domain firma.de ist.
Warum klein? Weil das den Paketnamen klar von Klassennamen unterscheidet, die in Java großgeschrieben werden (PascalCase).
Was ist der Java Pakete Import?
Der Import in Java sagt dem Compiler: "Ich möchte diese bestimmte Klasse aus einem anderen Paket verwenden." Ohne Import müsstest du jedes Mal den vollständigen Pfad schreiben - den sogenannten Fully Qualified Name.
Stell dir vor, du bestellst im Restaurant. Statt jedes Mal zu sagen "Ich möchte das Gericht aus der Vorspeisenkarte, Sektion A, Nummer 3" sagst du einfach "Ich hätte die Bruschetta." Der Import ist wie ein Menü-Verweis, der dem Kellner sagt, wo er suchen muss.
So sieht das in der Praxis aus:
// Ohne Import - umstaendlich
java.util.ArrayList<String> liste = new java.util.ArrayList<>();
// Mit Import - lesbar
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> liste = new ArrayList<>();
liste.add("Hallo");
liste.add("Welt");
System.out.println(liste);
}
}Welche Variante liest sich besser? Genau - mit Import wird dein Code sauberer und verständlicher.
Wichtig: Du kannst nur Klassen importieren, die als `public` deklariert sind. Klassen ohne Modifikator (package-private) sind nur innerhalb ihres eigenen Pakets sichtbar und können von außen nicht erreicht werden. Mehr dazu findest du in der Java Tutorials von Oracle.
Welche Arten von Imports gibt es in Java?
Es gibt drei Wege, Klassen aus anderen Paketen zu verwenden. Jede hat ihren Einsatzzweck.
Single-Type Import
Du importierst exakt eine Klasse. Das ist der beste Weg für die meisten Situationen, weil klar ist, welche Klasse du verwendest.
import java.util.ArrayList;
import java.util.Scanner;Type-Import-on-Demand (Wildcard Import)
Mit dem Sternchen `*` importierst du alle Klassen eines Pakets. Achtung: Das bedeutet NICHT, dass alle Klassen geladen werden. Der Compiler sucht nur in diesem Paket nach.
import java.util.*;
public class WildcardDemo {
public static void main(String[] args) {
ArrayList<String> namen = new ArrayList<>();
// HashMap muessste hier importiert werden, wuerde aber auch funktionieren
}
}Merke: Wildcard-Imports machen deinen Code weniger lesbar, weil man nicht sofort sieht, welche Klassen aus welchem Paket kommen. In der Praxis bevorzugen die meisten Entwickler Single-Type Imports.
Vorsicht bei Verwechslungen: `import java.util.*;` importiert nur Klassen direkt in `java.util`, nicht aus Unterpaketen wie `java.util.concurrent`. Für Letzteres brauchst du einen eigenen Import.
Statische Imports
Mit dem statischen Import holst du statische Methoden oder Konstanten einer Klasse direkt in deinen Namensraum. So kannst du sie ohne Klassennamen verwenden.
// Ohne statischen Import
double ergebnis = Math.sqrt(25);
System.out.println(Math.PI);
// Mit statischem Import
import static java.lang.Math.sqrt;
import static java.lang.Math.PI;
public class StaticImportDemo {
public static void main(String[] args) {
double ergebnis = sqrt(25); // Kein "Math." noetig
System.out.println(PI);
}
}Sparsam einsetzen - bei zu vielen statischen Imports verlierst du den Überblick, woher eine Methode kommt.
Was ist das Default-Paket?
Wenn du kein `package` in deiner Datei angibst, landet deine Klasse im sogenannten Default-Paket (auch Unnamed Package genannt). Das klingt einfach, ist aber problematisch.
Warum? Weil das Default-Paket von anderen Paketen aus nicht importiert werden kann. Deine Klasse ist dort quasi eingesperrt.
// FALSCH - Ohne Paketdeklaration (Default-Paket)
public class OhnePaket {
// Kann nicht aus anderen Paketen importiert werden!
}
// RICHTIG - Mit Paketdeklaration
package com.meinprojekt.start;
public class MitPaket {
// Kann ueberall importiert werden
}Merke: Nutze IMMER ein Paket. Schon ab dem zweiten Java-Projekt wirst du froh sein, dass du dir das Default-Paket abgewöhnt hast. Spätestens im Studium oder im Beruf wird das erwartet.
Wie strukturierst du ein Java-Projekt mit Paketen?
Stell dir vor, du baust eine einfache Kundenverwaltung. So könnte die Paketstruktur aussehen:
com/
kundenverwaltung/
model/
Kunde.java
service/
KundenService.java
main/
App.javaDie Klasse `Kunde` im Modell-Paket:
// Datei: com/kundenverwaltung/model/Kunde.java
package com.kundenverwaltung.model;
public class Kunde {
private String name;
private String email;
public Kunde(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public void zeigeInfo() {
System.out.println("Kunde: " + name + " (" + email + ")");
}
}Der Service, der den Kunden verwendet:
// Datei: com/kundenverwaltung/service/KundenService.java
package com.kundenverwaltung.service;
// Import aus einem anderen Paket
import com.kundenverwaltung.model.Kunde;
public class KundenService {
public void begruesseKunden(Kunde kunde) {
System.out.println("Willkommen, " + kunde.getName() + "!");
kunde.zeigeInfo();
}
}Die Hauptklasse, die alles zusammenbringt:
// Datei: com/kundenverwaltung/main/App.java
package com.kundenverwaltung.main;
import com.kundenverwaltung.model.Kunde;
import com.kundenverwaltung.service.KundenService;
public class App {
public static void main(String[] args) {
Kunde kunde = new Kunde("Max Mustermann", "max@example.com");
KundenService service = new KundenService();
service.begruesseKunden(kunde);
}
}Siehst du, wie jeder Import genau zeigt, woher die Klasse kommt? Das macht deinen Code wartbar - auch wenn das Projekt auf 100+ Klassen wächst. Wenn du mehr über Klassen und deren Aufbau erfahren willst, bietet W3Schools einen guten Überblick.
Welche Fallen gibt es beim Java Pakete Import?
Fehler 1: Import fehlt
Der Klassiker. Du verwendest `ArrayList`, vergisst den Import, und der Compiler wirft einen Fehler.
// FEHLER: ArrayList ist nicht importiert
public class FehlerDemo {
public static void main(String[] args) {
ArrayList<String> liste = new ArrayList<>();
// Compiler-Fehler: "Cannot find symbol"
}
}Lösung: Entweder den Import hinzufügen oder den Fully Qualified Name verwenden. Deine IDE (z.B. IntelliJ oder Eclipse) zeigt dir das meistens an und bietet Quick-Fixes an.
Fehler 2: Paketstruktur stimmt nicht mit Ordnerstruktur überein
Java verlangt, dass die Paketdeklaration exakt mit der Ordnerstruktur auf der Festplatte übereinstimmt. Wenn deine Klasse `package com.test;` deklariert, MUSS die Datei im Ordner `com/test/` liegen.
// Datei liegt in: src/com/meinprojekt/App.java
package com.falsch; // FEHLER! Muss com.meinprojekt sein
public class App {
// ...
}Fehler 3: Namenskonflikte durch Wildcard-Imports
Wenn du zwei Pakete mit gleichnamigen Klassen per Wildcard importierst, weiß Java nicht mehr, welche Klasse du meinst.
import java.sql.Date; // FEHLER: Date ist bereits importiert
import java.util.Date;
// Loesung: Einen Import entfernen und den Fully Qualified Name verwenden
import java.util.Date;
public class DatumsDemo {
public static void main(String[] args) {
Date utilDate = new Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
}
}Übungstipp: Import-Routine aufbauen
Erstelle ein neues Java-Projekt mit drei Paketen: `tiere.model`, `tiere.logic`, `tiere.main`. Lege in `model` eine Klasse `Hund` an, in `logic` eine Klasse `TierManager`, der einen Hund übergeben bekommt. Importiere `Hund` korrekt in `TierManager`.
Wenn das klappt, erweitere das Projekt um weitere Tiere. Beobachte, wie die Import-Statements wachsen - und wie deine IDE dir hilft, den Überblick zu behalten.
FAQ: Häufige Fragen zum Java Pakete Import
Muss ich java.lang Klassen importieren?
Nein. Das Paket `java.lang` wird automatisch importiert. Klassen wie `String`, `Math`, `System` oder `Integer` kannst du direkt verwenden. Warum? Weil diese Klassen so grundlegend sind, dass du sie in fast jedem Java-Programm brauchst.
Was bedeutet "package-private" (Default-Sichtbarkeit)?
Wenn du bei einer Klasse, Methode oder Variable keinen Zugriffsmodifizierer (`public`, `private`, `protected`) angibst, ist sie package-private. Das bedeutet: Nur Klassen im selben Paket können darauf zugreifen. Das ist nützlich für Hilfsklassen, die nicht nach außen sichtbar sein sollen.
Was ist der Unterschied zwischen Package und Import?
Das `package` deklariert, WO deine Klasse hingehört. Der `import` holt eine Klasse aus einem anderen Paket zu dir. Du deklarierst dein Paket einmal oben, aber du kannst beliebig viele Imports haben.
Kann ich alle Klassen eines Projekts mit einem Stern importieren?
Nein. `import com.meinprojekt.*;` importiert nur Klassen direkt in diesem Paket - nicht aus Unterpaketen. Jedes Paket muss separat importiert werden. Das ist oft ein Stolperstein bei Anfängern.
Was passiert bei zirkulären Abhängigkeiten zwischen Paketen?
Wenn Paket A Klassen aus Paket B importiert und Paket B Klassen aus Paket A, entsteht eine zyklische Abhängigkeit. Java erlaubt das zwar, aber es ist schlechtes Design. Besser: Gemeinsame Klassen in ein drittes Paket auslagern oder mit Interfaces arbeiten.
Fazit
Java Pakete Import ist kein optionales Feature - es ist die Grundlage für saubere, wartbare Projekte. Du deklarierst mit `package`, wo deine Klasse hingehört, und holst mit `import` genau die Klassen, die du brauchst. Fang damit an, auch bei kleinen Projekten eine Paketstruktur aufzubauen. Deine zukünftige Ich wird es dir danken, wenn das Projekt wächst.
Übrigens: Wenn du noch tiefer in Java einsteigen möchtest, schau dir unseren Beitrag zu Java Rekursion oder die Übersicht zu Java Operatoren an.
Brauchst du Hilfe bei Java oder anderen IT-Themen? Bei study-it.education findest du erfahrene Nachhilfelehrer, die dich individuell unterstützen - egal ob Azubi, Student oder Berufseinsteiger.
Want 1:1 help with this topic?
Need someone to walk through this with you?
Instead of re-reading: 30 min with a senior dev.
Book a free first chat →
Java Pakete und Imports einfach erklärt für Azubis, Studenten und Berufseinsteiger. Ordnung im Java-Code.
marcel.schmidtpeter@study-it.education →More reading
Java innere Klassen: Wann und warum? Einfach erklärt
Innere Klassen strukturieren Java-Code sauberer. Dieser Guide erklärt Azubis, Studenten und Einsteigern, wann und warum man sie einsetzt.
Java Main Methode: public static void main einfach erklärt
Einfache Erklärung der Java Main Methode für Azubis, Studenten und Berufseinsteiger. Verstehen Sie public static void main Schritt für Schritt.
Java StringBuilder vs String: Wann nutzen?
Lernen Sie den Unterschied zwischen String und StringBuilder in Java kennen. Effizient programmieren für Azubis, Studenten und Berufseinsteiger.