Pakete

Javafan12

Aktives Mitglied
Ich lerne gerade Java und hätte da mal eine Frage. Und zwar geht es dabei wie der Titel schon sagt um Pakete. Also ich schreib gerade ein simbles Paket und wollte wissen warum das nich funktioniert.
Java:
package deutschenglish;

public class hello
{
  public static void main(String []args)
  {
    System.out.println("Hello!");
  }
}
public class Hallo
{
  public static void main(String []args)
  {
    System.out.println("Hallo");
  }
}

Auch die Code Beispiele aus meinem Buch funktionieren leider nicht. Hoffer ihr könnt mir helfen. Bitte
mfg Javafan12 :)
 

faetzminator

Gesperrter Benutzer
Du hast zwei Mal die Methode mit der Signatur [c]static void main(String[])[/c] deklariert, das kann man natürlich nicht. Was willst du machen?
 

tfa

Top Contributor
Steht dieser Code in einer Datei? In einer Quelldatei ist maximal eine public class möglich.

Wenn du genau geschrieben hättest, was nicht geht, könnte man dir besser helfen.
 

Javafan12

Aktives Mitglied
Damit wollte ich noch gar nichts machen, wollte nur Testen bzw. als Beispiel Fehlcode hier rein schreiben. Hoffe das es funkt. danke
 

Javafan12

Aktives Mitglied
Java:
package deutschenglish;

public class hello
{
  public static void main(String []args)
  {
    System.out.println("Hello!");
  }
}
public class Hallo
{
  public static void main(String []args)
  {
    System.out.println("Hallo");
  }
}
Das funkt auch nit und hab diesmal nich 2 mal dekladiert. Fehler Beschreibung hier :
Er gibt dann alles aus und am Ende steht Could not find main class: deutschenglish.hello. Programm will exit

Wo liegt denn da der Fehler?
 

tfa

Top Contributor
Was gibt er alles aus?
Hat der Compiler die Dateien "hello.class" und "Hallo.class" erzeugt?
Wie startest du das Programm?
 

Spin

Top Contributor
Das hatte ich auch ziemlich oft am Anfang ;)

Du musst einfach eine neue Klasse erstellen und dann den Code da rein posten und neu compilieren.
Pass auf , dass du nicht den gleichen klassennamen verwendest.

Deine IDE findet die Class nicht. Also ist dein Classpath falsch eingestellt.
Erstell einfach neu , denn passts , grüße
 

Sonecc

Gesperrter Benutzer
Sorry Spin, aber ich wette, dass er so gut wie kein Wort dessen verstanden hat, was du ihm erklären wolltest^^
 

Spin

Top Contributor
Ok , ich versuchs nochmal:

Wenn du dein Programm öffnest mit dem du programmierst, hast du die möglichkeit eine neue Klasse zu erstellen.

Datei -> Neu -> Java Class.

Einfach den alten Quellcode kopieren und in der neuen Klasse einfügen.
Dann nochmal ausführen :)

Vorsicht, wenn du ein anderes Packet verwendest. grüße:bae:
 

Javafan12

Aktives Mitglied
Java:
// Datei: Artikel.java

package lagerverwaltung;  //Deklaration des Paketnamens

public class Artikel      //Definition der Komponente Artikel des
{                         //Pakets lagerverwaltung
   private String name;
   private float preis;

   public Artikel (String name, float preis)
   {
      this.name = name;
      this.preis = preis;
   }

   // Es folgen die Methoden der Klasse
}
Das ist das Beispiel aus dem Buch? Warum funktionert das jetzt nicht? Sry das ich mich so dumm anstelle
 

Schumi

Bekanntes Mitglied
In was für einem Ordner liegt es denn auf Deiner Festplatte, bzw. wie ist denn genau Dein Compileraufruf? Das sollte mit der Paketstruktur übereinstimmen.
 

Spin

Top Contributor
Moinsen;)

Klar funktioniert das , du musst das halt noch aufrufen ;)

Der Anfang ist schwer, aber das kommt und so wie du das machst ist es richtig ;)
So habe ich auch angefangen , siehst ja was aus mir herausgekommen ist .

:bae:

Java:
package lagerverwaltung;  //Deklaration des Paketnamens
 
public class Artikel      //Definition der Komponente Artikel des
{                         //Pakets lagerverwaltung
   private String name;
   private float preis;
 
   public Artikel (String name, float preis)
   {
      this.name = name;
      this.preis = preis;
   }

public static void main(String[]args){

Artikel artikel = new Artikel("Handschuh";1.0); // Parameter füllen.
System.out.println(artikel.name + " " + artikel.preis); // Parameter mit einen , aufrufen 

}
 
   // Es folgen die Methoden der Klasse
}


Du hast doch schön kommentiert. Dein Package ist das Packet in denen deine Klassen drin sind :)

Um eine Klasse auszuführen brauchst du die Hauptmethode. Die sogenannte main.

grüße
 

Javafan12

Aktives Mitglied
Der is ziemlich lang ich kann den nich aufschreiben, weil wärend die DOS Konsole eingeblendet wird kann ich das nicht abschreiben. Aber schreib mal den Anfang auf. Und das is unter Eigene Dateien gespeichert. Hier die Anzeige der DOS-Konsole:
Exception in thread " main " java.lang.NoClassDefFoundError: deutschenglish/Hello

Caused by: java.lang.ClassNotFoundException: deutscheiglsih.Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200

so braucht ihr noch mehr informationen? Weil das abzuschreiben würde sehr lange dauern weil ich ja wie oben gesagt die DOS-Konsole wegklicken muss. Ich habe dazu auch einen anderen qellcode genommen
Java:
package deutscheinglish;

class Hello
{
  public static void main(String []args)
  {
    System.out.println("Hello!");
  }
}
 

Javafan12

Aktives Mitglied
Spin der neue qellcode ist das jetzt auch der verbesserte? Ach ja danke das du mich lobst aber ich kommentier das gar nicht das war ein Buch Beispiel.
 

Spin

Top Contributor
ok , lad dir mal das:

Netbeans

Aber vorher:
JRE auswählen

Das JRE ist das Java runtime enviroment.

Innerhalb der Konsole musst du erst :

javac file machen danach
java file

Pass auf den Pfad drauf auf ;)

grüße



japp ist er ;) -> den neuen Quellcode kannsst du ausführen !
;)
 

Javafan12

Aktives Mitglied
ok. Aber es funktioniert immer noch nicht.
Bitte kann mir mal jemand den verbesserten Code schicken?:(
 
Zuletzt bearbeitet:

Spin

Top Contributor
Hey :)

Am besten du installierst die erstmal dass, was ich dir angegeben habe und dann lösen sich deine Probleme alle von alleine.

Dein Code ist richtig , doch deine Pfadangabe ist falsch. Und in der DosKonsole ertwas aufzurufen machen nur noch die wenigsten . Vor allem keine Anfänger ;)


( vor paar Jahren , habe so Informatiker angefangen programmieren zu lernen, aber heutzutage muss man das so nicht mehr machen :) )
 

Javafan12

Aktives Mitglied
Die oben genannten Dinge sind installiert alle. Aber wie wäre der richtige Pfad name? Außer neatbeans hab ja einen richtig guten Editor der Kompliemiert mit einem Knopfdruck
 
Zuletzt bearbeitet:

Schumi

Bekanntes Mitglied
Ist aber durchaus besser, es erstmal so zu machen denn nur so lernt man diese Fehler überhaupt kennen. Das direkt mit einer mächtigen IDE zu erschlagen ist nicht so gut.
Nochmal die Frage nach der Verzeichnisstruktur in der Du die Klassen speicherst. Wenn Du Pakete deklarierst, solltest Du die Klassendateien auch in entsprechende Verzeichnisse legen.

Eta: Schau Dir das doch mal an: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 3.9 Compilationseinheiten und eigene Pakete schnüren
 

Spin

Top Contributor
Wie heißt denn dein Compiler ?

Wenn du einen hast , dann ruf doch einfach die Class Datei auf.
Diese hat die Endung .class

Hast du denn das JDK installiert?

Also, das brauchst du auch , denn dieses enthält alle Bibliotheken mit den man java Programmiert.
Sowas ist bei Netbeans gleich mit bei.

Das JRE brauchst du um bsp. apllets im Internet zu sehen und so weiter. quasi die dinge wenn java läuft.

Wenn JDK da ist , dann gehst du in deine Konsole und suchsat nach der Class.

Du kannst deine Verteichnisse wechseln mit dem Kommando : cd.

sonst :
Dos


gruß
 

Javafan12

Aktives Mitglied
Danke Verzeichnisse wechsel geht bei mir nich. Mein Editor/Kompiler ist der Editor vom Bildungsserver-Hessen.
Wenn du in Wikipedia Java-Editor eingibst dann siehst du das Bild von einem Editor. Das is der den ich habe. Ach ja ich habe alles Installiert.
 

Spin

Top Contributor
Wie verzeichnisswechsel geht nicht??


Windows oder linux?

Wenn du von Dos sprichst dann wohl Windows, und dann einfach /d:
oder /c:

fertig .
 

U2nt

Bekanntes Mitglied
Der is ziemlich lang ich kann den nich aufschreiben, weil wärend die DOS Konsole eingeblendet wird kann ich das nicht abschreiben. Aber schreib mal den Anfang auf. Und das is unter Eigene Dateien gespeichert. Hier die Anzeige der DOS-Konsole:
Exception in thread " main " java.lang.NoClassDefFoundError: deutschenglish/Hello

Caused by: java.lang.ClassNotFoundException: deutscheiglsih.Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200

so braucht ihr noch mehr informationen? Weil das abzuschreiben würde sehr lange dauern weil ich ja wie oben gesagt die DOS-Konsole wegklicken muss. Ich habe dazu auch einen anderen qellcode genommen
Java:
package deutscheinglish;

class Hello
{
  public static void main(String []args)
  {
    System.out.println("Hello!");
  }
}

Allgemein wenn du eine
Code:
public class
machst, muss der *.java-File Name gleich dem Klassennamen sein, z.B. wenn du
Java:
public class Heeguu {
// Main methode usw.
}
Dann muss die Datei "Heeguu.java" heißen. Bei normalen Klassen sprich
Code:
class Eeek
ist dies nicht der Fall.
 

Javafan12

Aktives Mitglied
Ach ja der Kompiler führt es automatisch über die .class datei aus wo liegt verdammt der Fehler. Kann keiner mir helfen? Oder bin ich einfach zu dumm? :(
 

Schumi

Bekanntes Mitglied
Klappt denn etwas bei Dir, wenn Du das mit den packages lässt?
Beschreib doch noch einmal sehr genau die einzelnen Arbeitsschritte die Du durchführst und was dann genau "nicht klappt".
 

Javafan12

Aktives Mitglied
z.b [Java]class Hello
{
public static void main(String []args)
{
System.out.println("Hello!");
}
}[/code]

Dann funktioniert alles

Java:
package deutsch;
class Hello
{
  public static void main(String []args)
  {
    System.out.println("Hello!");
  }
}

Kommt die in den Fehlermeldung.

Also funktioniert da gar nichts. Alles mit package funktioniert gar nichts.
 

Schumi

Bekanntes Mitglied
Ok und wie ist die Fehlermeldung?

Hast Du diese neue Java Datei mit der Package Deklaration mal in den Ordner /deutsch kopiert und dann von dem Originalordner aus via javac deutsch\Hello kompiliert?
 

Spin

Top Contributor
Moinsen. Ich bitte dich einfach die Entwicklungsumgebung Netbeans herunterzuladen und die dann zu installieren.
Dann hast du kein ärger mehr, dass deine Klasse nicht gefunden wird.
Denn so wie du uns dein Problem schilderst können wir dir nicht helfen. Außer du machst Screenshots von jedem Schritt den du machst.

Tut mir leid, aber so reden wir nur gegen ein unbekanntes Problem an, was anscheind nicht an der Sprache java liegt.

grüße
 
O

OhneName

Gast
Schritt-für-Schritt-Anleitung:

1. Öffne den Editor:
Entweder über Start->Alle Programme->Zubehör->Editor
oder über Start->Ausführen->notepad

2. Gib folgenden Quellcode ein:
Java:
package meinpaket;

public class meineklasse {
	public static void main(String[] args) {
		System.out.println("Meine Klasse in meinem Paket");
	}
}

3. Speichere die Datei unter C:\meinpaket als meineklasse.java ab. Der volle Dateiname muss also C:\meinpaket\meineklasse.java sein.

4. Öffne eine Kommandozeile
Entweder über Start->Alle Programme->Zubehör->Eingabeaufforderung
oder über Start->Ausführen->cmd

5. Gib dort "cd C:\" ein und drücke Enter

6. Gib dort "javac meinpaket/meineklasse.java" ein und drücke Enter

7. Gib dort "java meinpaket/meineklasse" ein und drücke Enter
Es sollte jetzt "Meine Klasse in meinem Paket" angezeigt werden

Solltest du einen Fehler der Form "Befehl javac nicht gefunden" oder "Befehl java nicht gefunden" bekommen, dann musst du den bin-Ordner des JDKs erst noch der Umgebungsvariable PATH hinzufügen. Wie das geht solltest du mit Google leicht herausfinden können.

Nachdem du nun die grundlegende Funktionsweise von Paketen verstanden hast, insbesondere dass Ordnerstruktur und Paketstruktur übereinstimmen müssen, kannst du nun in der Hilfe/Dokumentation zu deinem Java-Editor nachlesen wie du damit Java-Dateien kompilierst und ausführst, die in Paketen liegen.

@Andere Poster:
Ich verstehe nicht warum ihr einem Anfänger empfehlt eine IDE wie NetBeans oder Eclipse zu installieren. Ja, sie nehmen einem eine Menge Arbeit ab, aber sie helfen einem nicht dabei zu verstehen, wie und warum es (nicht) funktioniert. In der Schule und insb. in der Prüfung muss er es dann auch mit seinem Java-Editor können und nicht mit irgendeiner riesigen IDE. Ich finde eine IDE sollte man erst dann benutzen, wenn man wenigstens einmal eine Datei mit javac von Hand kompiliert und mit java von Hand ausgeführt hat. Wenn man das mal verstanden hat, dann macht einem eine IDE auch weniger Probleme (wenns dann mal später darum geht zusätzliche Compiler-Flags mitzugeben oder weitere Dateien dem classpath hinzuzufügen).
 

Javafan12

Aktives Mitglied
ich gebe cd>C:\
und dann steht da zugriff verweigert
wie jetzt ich fühl mich verarscht? ich hab volle zugriffsrechte, weil ich keinen admin benutzer habe.
 

Spin

Top Contributor
5. Gib dort "cd C:\" ein und drücke Enter


Die Prompt von Windows startet immer mit C , weil das Betriebssystem aus C installiert ist.
Daher brauchst du garnicht das verzeichnis, nein , die festplatte wechseln.

Und unter Windows funktioniert das mit : C:\D:
fertig
 
O

OhneName

Gast
Also ich weiß ja nicht ob sich das unter Vista/7 geändert hat, aber bei mir unter XP befindet man sich nach starten der Kommandozeile im Ordner C:\Dokumente und Einstellungen\%USER% und um dann nach C:\ zu wechseln muss man cd C:\ oder cd \ eingeben.

Wie ist das bei dir, Spin?
 

faetzminator

Gesperrter Benutzer
Javafan12, Packages und Klassennamen entsprechen in Java immer den Ordnerstrukturen und Dateinamen. Wenn ich also eine Klasse [c]ch.faetzminator.Foo[/c] erstellen will, muss ich einen ordner ch/ erstellen, da drin einen Ordner faetzminator/ und da drin die Klasse Foo. Mit den Verzeichnisangaben muss man es dann auch kompilieren und ausführen.
 

Javafan12

Aktives Mitglied
Bei mir ist es auch in User. Ok verusche es. Also muss ich jetzt MeinePaket Ordner erstellen und darin den Ordner MeineKlasse und dann die java.class Datei darin speichern?
So hab jetzt die Ordner erstellt und die .class datei darin gespeichert.
Der Compiler zeigt an: Starte C:\Dokumente und Einstellungen\Name(User)\Eigene Dateien\meinPaket\meineKlasse\meineklasse.java

Trotzdem noch die gleiche Fehlermeldung
 
Zuletzt bearbeitet:
O

OhneName

Gast
meinPaket\meineKlasse\meineklasse.java würde bedeuten, dass in meineklasse.java oben die Anweisung package meinPaket.meineKlasse steht. Wenn dort nur package meinPaket steht, dann muss die Ordnerstruktur meinPaket\meineklasse.java sein.
 
O

OhneName

Gast
Funktioniert nicht ist keine Fehlerbeschreibung.
Poste bitte die genaue Fehlermeldung, den Programmcode der den Fehler verursacht und deine Ordnerstruktur.
Wenn du uns nicht ausreichend Informationen lieferst können wir nur raten.
 

Javafan12

Aktives Mitglied
So die Fehlermeldung ist die gleiceh die ich zu letzt gepostet habe. Was soll ich machen euch als den gleicehn Fehlercode posten. Ich hätte euch schon gesagt wenn sich der code verändert hätte.
 
O

OhneName

Gast
Ist folgendes dein Quellcode?
Java:
package meinpaket;
 
public class meineklasse {
    public static void main(String[] args) {
        System.out.println("Meine Klasse in meinem Paket");
    }
}

Hast du den als "meineklasse.java" im Ordner "meinpaket" gespeichert?

Hast du eine Kommandzeile geöffnet, in den Ordner navigiert, in dem der Ordner meinpaket mit der Datei meineklasse.java liegt und "javac meinpaket/meineklasse.java" und anschließend "java meinpaket/meineklasse" ausgeführt?

Und dann hast du den Fehler "Zugriff verweigert" bekommen?
Dann solltest du den Ordner mal woanders hin verschieben, wo du ganz sicher Zugriff hast oder es mal mit Administratorrechten probieren.

Wenn das nicht deine Fehlermeldung ist, dann probiere es bitte nochmal und kopiere wirklich 1 zu 1 die Fehlermeldung hier rein.
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
J Erste Schritte Pakete und Klassen Java Basics - Anfänger-Themen 5
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
S Pakete in BlueJ Java Basics - Anfänger-Themen 5
M Imports einzeln oder direkt komplette Pakete .*? Java Basics - Anfänger-Themen 26
J Subklasse soll alle Klassen/Pakete der Superklasse importieren Java Basics - Anfänger-Themen 3
D OOP Pakete Import Java Basics - Anfänger-Themen 15
J VoiceChat Hilfe - Empfangene Pakete abspielen Java Basics - Anfänger-Themen 6
A Hinzufügen neuer Pakete Java Basics - Anfänger-Themen 5
M Eigene Pakete in Eclipse erstellen Java Basics - Anfänger-Themen 5
P Pakete kompilieren.... Java Basics - Anfänger-Themen 2
B Wie kann ich eigene Pakete nutzen? Java Basics - Anfänger-Themen 10
M Neue Pakete implementieren Java Basics - Anfänger-Themen 5
G Kann keine Pakete runterladen! Java Basics - Anfänger-Themen 3
S Wie .jar - Pakete nutzen? Java Basics - Anfänger-Themen 3
G importieren von pakete Java Basics - Anfänger-Themen 11
N Porblem mit dem Importieren eigener Pakete Java Basics - Anfänger-Themen 4
M Pakete Java Basics - Anfänger-Themen 4
T Pakete und "-cp_ funktionieren net zusammen Java Basics - Anfänger-Themen 2
S Import Pakete oder auflösen . .*, bringt das was? Java Basics - Anfänger-Themen 5
P Problem: Kann keine externen Pakete importieren Java Basics - Anfänger-Themen 11
N Java2me Pakete importieren Java Basics - Anfänger-Themen 2
P Was sind Pakete? Java Basics - Anfänger-Themen 6
Z Klassen, Pakete und Verzeichnisse Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben