Portal > Foren > Java > Allgemeine Java-Programmierung > Was ist ein package
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 21.03.2005, 20:48 Nach oben    #1
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard Was ist ein package

Hallo zusammen,

ich versuch mich mal weiter durch mein Java-Buch zu arbeiten. Über das abtippen von Programmbeispielen kann man geteilter Meinung sein, ich meine jedoch das man hierdurch das erste Gefühl für eine Sprache bekommt. Also versuche ich die Beispiele zu verstehen.

Hier das Beispiel:

Code:
package ch04.rectangle;
class rectangle	{
	public	static	void	main(String[]	arguments) {
		int height;
		int width;
		int area;
		height = 1;
		width = 5;
		area = height * width;
		System.out.println("Fl\u00e4che = " + area + " m^2");
	}
}
Die erste Zeile schein Probleme zu bereiten. Übersetzen läßt sich der Code, wenn ich versuche ihn auszuführen bekomme ich die Fehlermeldung:

Code:
java rectangle
Exception in thread "main" java.lang.NoClassDefFoundError: rectangle (wrong name: ch04/rectangle/rectangle)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Ich habe dann einfach mal die erste Zeile auskommentiert und dann hat's funktioniert. Nun würde ich jedoch gerne wissen was 'package ...' bedeutet. Zumindest grob. Kann mir das jemand erklären?

Viele Grüße
pixel
pixel ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.03.2005, 21:18 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

Ausführlich: http://www.javaworld.com/javaworld/j...claration.html

Kürzer: Packages sind eine Zusätzliche Organisationseinheit die quasi über den Klassen steht. Das gleiche gibts in C++ mit den Namespaces.

Dies ermöglicht dir z.B. eine Klasse "Button" zu haben und damit zu arbeiten wie wenn nichts wäre obwohl es in der Package java.awt schon eine Button-Klasse gibt.
Gäbe es keine Packages wüsste Java nicht welche jetzt gemeint ist -> Konflikt d.h. Exception und der User hat keine Freude.

Wenn du keine Package angibst kommen die Klassen in ein "Default-Package", d.h. alle Klassen ohne Packageangabe sind im selben Package.

Für kleine Testanwendungen macht eine eigene Package keinen Sinn, wenns etwas grösser wird hingegen schon - auch weil evtl. jemand die Werke zweier Leute kombinieren will und es dann nicht zu Namenskonflikten kommen soll (deshalb sind auch oft die Internetadressen des Erstellers - z.B. net.sf/blabla/zeugs im Packagenamen verewigt.

Damit du obige Java-Datei kompilieren könntest müsstest du sie
1) In einen Ordner ch04 Stecken
2) javac und java aus dem darüberliegenden Ordner ausführen, also javac ch04/bla.java java ch04.bla (wobei beim javac bin ich mir jetzt gerade nicht so sicher, aber beim Java ists bestimmt so, das weiss ich)

MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM
"We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth
peschmae ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.03.2005, 21:39 Nach oben    #3
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

Zitat:
Kürzer: Packages sind eine Zusätzliche Organisationseinheit die quasi über den Klassen steht. Das gleiche gibts in C++ mit den Namespaces.

Dies ermöglicht dir z.B. eine Klasse "Button" zu haben und damit zu arbeiten wie wenn nichts wäre obwohl es in der Package java.awt schon eine Button-Klasse gibt.
Also "nur" eine Organisatorische Einheit um' mal mit LDAP zu vergleichen. Ein Package enthält jedoch keine Eigenschaften die es weiter gibt.

Ich habe einfach mal etwas rumgespielt. Soweit ich das jetzt verstanden habe setzt sich der Pfad, in welchem gesucht wird so zusammen:

Code:
package ch04;
class Rectangle	{
[...]
Sucht ../ch04/Rectangle

wärend:

Code:
package ch04.rectangle;
class Rectangle	{
[...]
../ch04/rectangle/Rectangle

sucht. Ich habe einfach mal die Groß- Klein- Schreibung verändert um zu sehen was der Fehler ausgibt.

Viele Grüße
pixel
pixel ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.03.2005, 22:24 Nach oben    #4
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

Hallo zusammen,

aufbauend auf dem o.g. Beispiel werden nun die unterschiedlichen Datentypen in Java erklärt und so wie das im Buch abgedruckt ist funktioniert das schon wieder nicht. Das Beispiel wurde so geändert:
Code:
class Rectangle	{
	public	static	void	main(String[]	arguments) {
		byte height;
		byte width;
		byte area;
		height = 1;
		width = 5;
		area  = (byte)	height * width;
		System.out.println("Fl\u00e4che = " + area + " m^2");
	}
}
Der Datentyp 'int' wurde also durch 'byte'ersetzt. Beim versuch den Code zu compilieren erhalte ich:
Code:
ch04/ex02/Rectangle.java:9: possible loss of precision
found   : int
required: byte
                area  = (byte)  height * width;
                                       ^
1 error
Die Fehlermeldung verstehe ich schon nur den Fehler erkenne ich nicht. Bei der Berechnung der Variable area ist doch der korekte Datentyp angegeben?

Viele Grüße
pixel
pixel ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.03.2005, 22:36 Nach oben    #5
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

ok, meine Freundin **schäm** hat den Fehler gefunden. Es muß heisen:
Code:
area  = (byte) (height *  width);
Trotz allem stellt sich für mich die Frage warum ich bei der Berechnung den Datentyp noch einmal angeben muß wo ich ihn doch bei allen drei Variabeln wärend der Deklaration angegeben habe.

Viele Grüße
pixel
pixel ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2005, 08:03 Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

Zitat:
Zitat von pixel
Code:
area  = (byte) (height *  width);
Trotz allem stellt sich für mich die Frage warum ich bei der Berechnung den Datentyp noch einmal angeben muß wo ich ihn doch bei allen drei Variabeln wärend der Deklaration angegeben habe.
Scheint fast dass Java für die Multiplikation die Datentypen erst mal nach int castet und dann erst multipliziert. Dann wäre es durchaus logisch dass dud a wieder explizit casten musst.
Ist aber nur eine Vermutung, habe gerade mein schlaues Buch nicht hier...

MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM
"We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth
peschmae ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2005, 09:44 Nach oben    #7
Benutzer
 
Registriert seit: 19.03.2005
Beiträge: 35
Standard

Hallo,

ich habe mir dann auch noch die anderen Datentypen bzw. deren deklaration angesehen. Da ist es ja wieder anderst. Beim Typ long wird hinter dem Wert dann noch ein L gestellt. Das ist etwas verwirrend.

Viele Grüße
pixel
pixel ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Packages und Strukturen im Eclipse WarrenFaith Eclipse 14 12.03.2007 10:00
Frage zu PEAR Package AuthHttp la-finest PEAR, PECL und Frameworks 2 03.10.2006 15:56
java standards für package Namen bosk Allgemeine Java-Programmierung 1 20.12.2005 14:57
Was ist ein package? raZed Allgemeine Java-Programmierung 2 08.05.2005 09:42
package in package in eclispe p-flash Allgemeine Java-Programmierung 1 31.03.2005 06:27


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45