erste Schritte mit Paketen

paco89

Bekanntes Mitglied
hallo,

ich les mir grad den abschnitt über das thema "Pakete" durch und habe dazu einen ganz einfachen beispielcode abgetippt.

Java:
package paket1;

 public class PackageTest{

  public static void main (String [] args){
  
    System.out.println("Test der package-Anweisung.");
  
  }



}

nun ist mir nicht ganz klar wie ich den kompilieren und ausführen soll.

ich versuche es die ganze zeit mit javac paket1\PackageTest.java zu kompilieren und mit java paket1.PackageTest auszuführen, aber es klappt irgendwie nicht.
als fehlermeldung erhalte ich immer ClassNotFoundException

kann mir da jmd. weiterhelfen?
 

paco89

Bekanntes Mitglied
hier die genaue fehlermeldung:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: paket1/PackageTest
Caused by: java.lang.ClassNotFoundException: paket1.PackageTest
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: paket1.PackageTest. Program will exit.
 
J

JohannisderKaeufer

Gast
Die Datei PackageTest muß laut Convention in einem Ordner paket1 liegen.


Und dann wird im Verzeichnis in dem der Ordner paket1 liegt, also nicht im Ordner paket1 sondern dem darüberliegenden

Code:
javac paket1/PackageTest.java

und

Code:
java paket1.PackageTest

aufgerufen.
 
Zuletzt bearbeitet von einem Moderator:

paco89

Bekanntes Mitglied
jo, alles hat prima funktioniert. das mit der CLASSPATH hatte ich nich so ganz verstanden. jetzt weiß ich ungefähr wie das funktioniert. für den anfang reicht es, schätze ich. Ich kann es ja noch vertiefen.



vielen dank für die hilfe. ;)
 

paco89

Bekanntes Mitglied
hallo, ich habe leider wieder eine frage zu dem thema:

also ich musste zwei klassen schreiben. diese wären:

Java:
package paket2;

public class Klasse{

  public Klasse{
    System.out.println("Definition einer Klasse im Verzeichnis paket2");
  }

}


Java:
package paket1;
import paket2.Klasse;

  class KlassenTest{
  
  public static void main(String [] args){
  
    paket2.Klasse kls = new paket2.Klasse();
  
  }


  }

zu der aufgabe:
im ordner paket1 sollte ein weiteres verzeichnis paket2 hinterlegt werden. Die Klasse "Klasse" sollte im ordner paket2 gespechert werden. daher habe ich auch package paket2; hingeschrieben.
und die Klasse "KlassenTest" muss im Ordner paket1 hinterlegt werden. alles getan.

die Klasse "KlassenTest" soll im Verzeichnis paket1 übersetzt und ausgeführt werden.


nun mach ich das was ich in meinem obigen beitrag gelernt habe und versuche es mit dem befehl

javac paket1/KlassenTest.java


zu kompilieren. aber es geht irgendwie nicht. als fehler kommt das hier raus:
Code:
javac paket1/KlassenTest.java
paket1/KlassenTest.java:2: package paket2 does not exist
import paket2.Klasse;
             ^
paket1/KlassenTest.java:8: package paket2 does not exist
    paket2.Klasse kls = new paket2.Klasse();
          ^
paket1/KlassenTest.java:8: package paket2 does not exist
    paket2.Klasse kls = new paket2.Klasse();

ich versuche es schon seit tagen, aber ich komme nich weiter. kann mir jdm. weiterhelfen?
 
F

Firephoenix

Gast
im ordner paket1 sollte ein weiteres verzeichnis paket2 hinterlegt werden

Ergibt folgende Ordnerstruktur:
Code:
paket1
-KlassenTest.java
-paket2
--Klasse.java

Imports und Paketnamen werden immer von der Wurzel aus angegeben, die volle Adressierung für Klasse ist also paket1.paket2.Klasse und genauso sieht auch der import aus.
Für einen import a la paket2.Klasse benötigst du diese Ordnerstruktur:
Code:
paket1
-KlassenTest.java
paket2
-Klasse.java

[OT]Mal ne Frage am Rande: Dein erster Thread hier im Hausaufgabenbereich war vom 08.12.2011, also fast 1 Jahr her, seitdem postest du pro Monat 2-3 Threads im Hausaufgabenbereich, wie kommt es das du dich dann immer noch mit Grundlagen wie packages beschäftigst?[/OT]

Gruß
 
Zuletzt bearbeitet von einem Moderator:

paco89

Bekanntes Mitglied
ich lerne eben langsam. deshalb vtl. dafür ist das forum doch da. um eben fragen zu stellen.

zu deinem beitrag. ich habe genau dieselbe ordnerstruktur, allerdings funtktioniert das kompilieren nicht.
 
F

Firephoenix

Gast
Du hattest zusätzlich auch noch einen Fehler im Konstruktor von Klasse (runde Klammern vergessen).
Ich hab dir das ganze mal für Windows gebastelt mit einer compile.bat und einer run.bat.
Projekt ist im Anhang als zip.

[TIPP]Wenn du nicht von Schule etc gezwungen bist mit Konsole und Texteditor zu arbeiten und zu compilieren, dann arbeite dich in eine IDE wie Eclipse ein. Da brauchst du 2 Tage um dich dran zu gewöhnen und dannach arbeitest du x mal so schnell weil der ganze Salat wie importe, packagestruktur, formatieren von der IDE wesentlich zuverlässiger erledigt wird als man es selbst kann.[/TIPP]

Gruß
 

Anhänge

  • Projekt.zip
    2,3 KB · Aufrufe: 0

Neue Themen


Oben