# Wie erstelle ich Packete unter JBuilder?



## Reality (6. Jan 2004)

Hi,
ich schaffe es leider nicht Packete unter JBuilder zu erstellen. Wenn ich es standardmäsig mit neues Projekt erstellen und dann neue Klasse erstellen mache, kommt immer eine Fehlermeldung. Die Codes sind von Tutorials und Bücher.
Beispiel:

```
/*
Programm PaketinhaltA.java
*/

package meinpaket;

public class PaketinhaltA
{
    public void WerBistDu()
    {
        System.out.println("Hier ist die Methode 'WerBistDu' "
                +"aus dem Paket 'meinpaket'");
        System.out.println("Ich stehe in der Klasse 'PaketinhaltA'");
        System.out.println("");
    }
}
```
Kommt die Fehlermeldung:



> C:\jbuilder5\jdk1.3\bin\javaw -classpath "C:\Dokumente und Einstellungen\benutzername\Desktop\unbenannt1\classes;C:\jbuilder5\jdk1.3\demo\jfc\Java2D\Java2Demo.jar;
> C:\jbuilder5\jdk1.3\jre\lib\i18n.jar;C:\jbuilder5\jdk1.3\jre\lib\jaws.jar;C:\jbuilder5\jdk1.3\jre\lib\rt.jar;
> C:\jbuilder5\jdk1.3\jre\lib\sunrsasign.jar;C:\jbuilder5\jdk1.3\lib\dt.jar;C:\jbuilder5\jdk1.3\lib\tools.jar"  PaketinhaltA
> java.lang.NoClassDefFoundError: PaketinhaltA
> ...



Was hat das zu bedeuten?

Liebe Grüße
Reality


----------



## bummerland (6. Jan 2004)

ich kenne jbuilder nicht genau, aber ich denke, du musst erst ein package anlegen. irgendwo unter datei - neu - package oder so ähnlich.


----------



## Reality (6. Jan 2004)

Schön wär´s.  Nach soetwas ähnlichem habe ich auch schon gesucht, aber unter datei, neu (auch nicht unter datei) steht nichts mit Package.

Liebe Grüße
Reality


----------



## Pulvertoastman (7. Jan 2004)

Der Class Wizard vom JBuilder sollte schon Pakete unterstützen können.
Wenn du auf Datei->neu gehst und dort Class anwählst, wird der entsprechende Wizard gestartet. Dort hast du dann auch die Möglichkeit ein package anzugeben. Dieses wird, falls noch nicht vorhanden, auch erstellt.

Klar, dass bei der Ausführung gemeckert wird. Du behauptest, dass du eine Klasse im pacakge meinpaket hast, wo aber nix zu finden ist.


----------



## Reality (7. Jan 2004)

Pulvertoastman hat gesagt.:
			
		

> Der Class Wizard vom JBuilder sollte schon Pakete unterstützen können.
> Wenn du auf Datei->neu gehst und dort Class anwählst, wird der entsprechende Wizard gestartet. Dort hast du dann auch die Möglichkeit ein package anzugeben. Dieses wird, falls noch nicht vorhanden, auch erstellt.


Bist du dir sicher?! Eine Klasse erstelle ich jedesmal!


> Klar, dass bei der Ausführung gemeckert wird. Du behauptest, dass du eine Klasse im pacakge meinpaket hast, wo aber nix zu finden ist.


Also ich habe 2 verschiedene Anleitungen ausprobiert, wie man Packete erstellt, beide gingen nicht. Und IMO gibt man mit "import java.xxx.*;" Packete an nicht mit "package packet".

Liebe Grüße
Reality


----------



## Pulvertoastman (8. Jan 2004)

Reality hat gesagt.:
			
		

> Bist du dir sicher?! Eine Klasse erstelle ich jedesmal!



Ja! 

Bei mir sehen im ClassWizard die oberen Zeilen folgendermaßen aus:

Class Information
ClassName [Eingabefeld]
Package [Eingabefeld]
Bas Class [Eingabefeld]

Bei Package kannst du den Packagenamen der zu erstellenden Klasse eingeben.



			
				Reality hat gesagt.:
			
		

> Also ich habe 2 verschiedene Anleitungen ausprobiert, wie man Packete erstellt, beide gingen nicht. Und IMO gibt man mit "import java.xxx.*;" Packete an nicht mit "package packet".



Import ist dazu da, deiner Klasse all die Klassen bekannt zu machen, die du nutzen möchtest. Ähnlich wie include in C.
Mit package definierst du, zu welchem package deine Klasse gehört.


----------



## Reality (8. Jan 2004)

Hi,
so habe ich es auch gemacht. (mit deiner Methode). Es kommt immer dasselbe.
Folgendes kommt: POPUP öffnet sicht:


> Could not find main method. Programm will exit!



Dann unten bei der Konsole:


> C:\jbuilder5\jdk1.3\bin\javaw -classpath "C:\Dokumente und Einstellungen\benutzername\Desktop\PackageTest\classes;C:\jbuilder5\jdk1.3\demo\jfc\Java2D\Java2Demo.jar;
> C:\jbuilder5\jdk1.3\jre\lib\i18n.jar;C:\jbuilder5\jdk1.3\jre\lib\jaws.jar;C:\jbuilder5\jdk1.3\jre\lib\rt.jar;
> C:\jbuilder5\jdk1.3\jre\lib\sunrsasign.jar;C:\jbuilder5\jdk1.3\lib\dt.jar;C:\jbuilder5\jdk1.3\lib\tools.jar"  packagetest.StartKlasse
> java.lang.NoSuchMethodError: main
> ...


(In diesem Fall habe ich einen anderen Klassen- und Package-Namen verwendet.)

Liebe Grüße
Reality


----------



## Pulvertoastman (9. Jan 2004)

Hat denn denn Klasse eine main-Mehtode?

Jede Klasse, die du als Programm starten können willst braucht eine solchen Einsprungpunkt. Das hat mit packagaes nichts zu tun.


----------



## Reality (9. Jan 2004)

Hi,
meinst du public static void main (String[] args)? Das steht in meinen Tutorials und Büchern aber nicht.

Liebe Grüße
Reality


----------



## Reality (10. Jan 2004)

Hi,
ich habe es jetzt soweit geschafft die Packete zu erstellen, jedoch findet er dann bei dem Hauptprogramm nicht, wo ich die Packete mit import aufrufe, die Packete.
Was mache ich falsch?!

Liebe Grüße
Reality


----------



## Roar (10. Jan 2004)

Reality hat gesagt.:
			
		

> Hi,
> meinst du public static void main (String[] args)? Das steht in meinen Tutorials und Büchern aber nicht.


*lol* diese zeile steht in jedem buch/tutorial an erster stelle. jedes buch fängt mit einem hello world beispiel an, und zwar mit dieser zeile. nur in klassen, die nicht direkt vom interpreter aufgerufen werden, sondern instantiiert werden, müssen keine main methode haben


----------



## Reality (10. Jan 2004)

Roar hat gesagt.:
			
		

> Reality hat gesagt.:
> 
> 
> 
> ...


Kein Verständnis, was? Wenn in den Tuts der komplette Code ohne das main angezeigt wird, dann schreibe ich das auch so! Aber wie gesagt habe es nun geschafft die Packete zu schreiben, nur findet er sie dann nicht über import.
Zur Abwechslung vielleicht mal etwas Konstruktives, ja?

Liebe Grüße
Reality


----------



## Pulvertoastman (12. Jan 2004)

Reality hat gesagt.:
			
		

> Roar hat gesagt.:
> 
> 
> 
> ...



Und so etwas ist hier Moderator!

Zum Problem:

Wie sieht denn dein Code aus? Welche packages findet er nicht?

Vielleicht solltest du dich auch erst einmal etwas näher mit packages beschäftigen. z.B. hier:

http://www.c-lab.de/java/Krueger2/html/k100063.html#sectlevel2id008002


----------



## Reality (12. Jan 2004)

Hi,
so sieht einer meiner drei Packete aus:

```
package meinpacket;


public class PacketinhaltA {
  public PacketinhaltA() {
  }

  public void WerBistDu()
 {
     System.out.println("Hier ist die Methode 'WerBistDu' "
             +"aus dem Paket 'meinpaket'");
     System.out.println("Ich stehe in der Klasse 'PaketinhaltA'");
     System.out.println("");
 }

  public static void main(String[] args) {


  }

}
```

Der Hauptcode sieht so aus:
	
	
	
	





```
/*
Programm Pakettest.java
*/

/*
Hier stehen unsere Importanweisungen, damit der Compiler und der 
Interpreter unsere Klassen auch findet. Der '*' bedeutet, dass wir 
alle im Verzeichnis vorhandenen Klassen für unser Programm verfügbar 
machen wollen.
*/

import meinpaket.*;
import meinpaket.meinunterpaket.*;

public class Pakettest
{
    /*
    Die obligatorische Startmethode, die in diesem kleinen Beispiel 
    auch die einzige Methode ist.
    */
    public static void main(String args[])
    {
        /*
        Nachdem wir drei Klassen geschrieben haben, deklarieren wir 
        auch drei Objekte.
        */
        PaketinhaltA oPaketA;
        PaketinhaltB oPaketB;
        UnterPaketinhaltC oPaketC;
        /*
        Jetzt bilden wir die entsprechenden Instanzen der Objekte
        */
        oPaketA=new PaketinhaltA();
        oPaketB=new PaketinhaltB();
        oPaketC=new UnterPaketinhaltC();
        /*
        Und jetzt rufen wir für alle Objekte die Methode 'WerBistDu' auf
        */
        oPaketA.WerBistDu();
        oPaketB.WerBistDu();
        oPaketC.WerBistDu();
    }
}
```

Mit dem Thema Packete beschäftige ich mich ja gerade. Die Codes sind nachvollziehbar, nur schaffe ich es eben nicht das Programm lauffähig zu machen.  :cry:

Liebe Grüße
Reality


----------



## Pulvertoastman (12. Jan 2004)

Servus,

also, PaketInhaltA braucht tatsächlich keine main-Methode, da es wohl auch nicht von der Kommandozeile gestartet wird.

Welche Pakete findet JBuilder denn nicht?

Hinweis:
Achte darauf, dass deine Klassen sich auch in den entsprechenden Verzeichnissen befinden.

Die Klasse PaketInhaltA muss sich im Verzeichnis src/meinpaket befinden, usw.

Vielleicht hast du da noch ein wenig Müll von vorherigen Versuchen stehen.


----------



## Reality (12. Jan 2004)

Pulvertoastman hat gesagt.:
			
		

> Servus,
> 
> also, PaketInhaltA braucht tatsächlich keine main-Methode, da es wohl auch nicht von der Kommandozeile gestartet wird.


Ist in meinen Tuts ebenfalls so, aber ohne main meckert JBuilder.


> Welche Pakete findet JBuilder denn nicht?


Meine Selbsterstellten wie PacketinhaltA


> Hinweis:
> Achte darauf, dass deine Klassen sich auch in den entsprechenden Verzeichnissen befinden.
> 
> Die Klasse PaketInhaltA muss sich im Verzeichnis src/meinpaket befinden, usw.
> ...


Bei mir sind sie, da wo sie JBuilder ablegte in dem Verzeichnis classes/meinpacket.
Ich werd´s morgen mal ausprobieren, in dem ich die Dateien kopiere (muss noch lernen), danke! 

Liebe Grüße
Reality


----------



## Reality (16. Jan 2004)

Ein riesen Dankeschön an Pulvertoastman, der erkannte, dass ich jediglich ein Rechtschreibfehler bei der Bennenung der Packete hatte und sie so unterschiedliche Namen hatten.

Liebe Grüße
Reality


----------

