1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Eclipse/packages aendern

Dieses Thema im Forum "OS X-Developer" wurde erstellt von -yoyo-, 14.09.05.

  1. -yoyo-

    -yoyo- Gast

    Hallo,

    ich habe ein Problem mit Eclipse, ich habe ein Programm geschrieben, bestehend aus 6 Klassen. Alles ist wunderbar gelaufen. Jetzt wollte ich das package aendern. habe also ueber jede Klasse package xyz; geschrieben.
    Wenn ich das Programm jetzt compiliere&ausfuehre bekomme ich folgende Fehlermeldung

    "Exception in thread "main" java.lang.NoClassDefFoundError: Main"

    Main.java ist die Klasse die die main methode enthaelt.

    Ich nehme mal an, dass ich eventuell den Klassenpfad oder so aendern muss, habe beim googlen leider auch nichts gefunden und hoffe mal, dass mir hier jemand helfen kann.

    Danke schonmal

    -yoyo-
     
  2. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.252
    Datei-/Packagename und Klassenname müssen doch bei Java übereinstimmen, oder irre ich mich da?
     
  3. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Beim Ausführen erwartet Java, dass die Klassen innerhalb eines Packages auch physikalisch in einem gleichnamigen Ordner liegen, sowie dass die Ausführung unterhalb dieses Ordners stattfindet. Konkret: Hast Du eine Klasse "Bla.class" in einem Package "blubb", muss die auch in einem Ordner "blubb" liegen und die Ausführung via "java blubb/Bla" ablaufen.
     
    #3 quarx, 14.09.05
    Zuletzt bearbeitet: 14.09.05
  4. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Jein. Du musst die Klassen auch in den Ordner xyz unter source verschieben. Das Package gibt gleichzeitig die hierarchische Ordnerstruktur mit vor. Den Startaufruf musst Du natürlich auch auf 'xyz.Main' machen.

    Gruß,

    .commander
     
  5. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    ;) Warst schneller. Würdest aber sofort vom Stylechecker eins über die Rübe bekommen: niemals, unter gar keinen Umständen, auch nicht in einem Forum, darf man eine Klasse klein schreiben! Das ist pfuipfuipfui! ;)
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Jaa, ist ja gut, hast Recht. ;) :p
    Das kommt davon, wenn man sich die ganze Zeit nur mit C++ beschäftigt...
     
  7. creative7even

    creative7even Jerseymac

    Dabei seit:
    23.02.05
    Beiträge:
    454
    kleiner Tipp:

    Eclipse hat eine Funktion eingebaut, die sich 'Refactor' nennt. Mit ihr kann man Klassennamen, Pakete, Interfaces, Variablennamen und was weiss ich, komfortabel umbenennen. Einfach Rechtsklick (z.B.: über ein Paket, oder Variable) -> 'Refactor' -> 'Rename'. Eclipse ändert dann alle betreffenden Stellen innerhalb des workspace (oder workspaces? o_O ).

    c7.
     
  8. -yoyo-

    -yoyo- Gast

    Danke fuer die Antworten,

    besonders das mit dem Refactor ist gut zu wissen. Ich habe schon alle Dateien in dem Verzeichnis projektname/neuerPackageName. Hat aber irgendwie nicht funktioniert. Bei allen anderen Klassen gab es auch kein Problem nur bei der Main-Klasse.

    Ich habe dann alle .class files weggeschmissen das Projekt aus Eclipse geloescht und dann neu geladen. Habe noch ein paarmal den Fehler bekommen, als ich versucht habe zu compilieren und auf einmal tat es?! Warum, weiss ich auch nicht.


    @.commander

    Deine Antwort raffe ich nicht so ganz:
    "Du musst die Klassen auch in den Ordner xyz unter source verschieben. Das Package gibt gleichzeitig die hierarchische Ordnerstruktur mit vor. Den Startaufruf musst Du natürlich auch auf 'xyz.Main' machen."

    Bin noch nicht so super eclipse Erfahren (fuer die die es noch nicht gemerkt haben :-D )

    Kann ich das in Eclipse machen, irgendwie kann ich nichts finden unter "Source" mit dem man die Klassen verschieben kann oder wie man den Aufruf nach xyz.Main aendern kann. Wuerde mich halt schonmal interessieren passiert mir bestimmt oefter ;)

    Gruesse

    -yoyo-
     
  9. creative7even

    creative7even Jerseymac

    Dabei seit:
    23.02.05
    Beiträge:
    454
    irgendwo in der rechten oberen Ecke findet sich ein Button der sich "Java-Browsing" nennt *klick*. Daraufhin öffnet sich ein Fenster mit Namen "Package-Explorer". Klassen kannst du dann per drag&drop veschieben.

    oder wenn du das meintest:

    Klasse die Du ausführen möchtest ist im Editor geöffnet. Grüner Pfeil->Run as...->Java-Application.
    Wenn da ne main-Methode drinnen ist dann wird sie ausgeführt.

    oder kapier ich jetz gar nix mehr? :eek:

    c7.
     
  10. -yoyo-

    -yoyo- Gast

    creative7even

    Es funktioniert jetzt (weiss zwar immer noch nicht warum es auf einmal getan hat). Das mit dem Package Explorer und so habe ich schon rausgefunden. Da waren auch von Anfang an, alle Klassen im gleichen Package und alle .java dateien waren im gleichen Ordner. Haette also von Anfang an tun sollen.

    Nochmal Danke fuer die Antworten.

    -yoyo-
     
  11. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Ich übernehm das mal eben noch: Das Problem resultiert daraus, dass der Java-Interpreter ("java" im Terminal) erwartet, dass der logischen Verteilung des Quellcodes auf verschiedene Packages auch eine physikalische Verteilung auf entsprechende Ordnerstrukturen zur Seite gestellt wird. Bei der Ausführung von Java-Programmen in Paketen muss man das im Terminal von dem Ordner oberhalb des Packages machen. Benutzt man nun Eclipse als Entwicklungsumgebung, so wird einem die Erstellung der Ordnerstrukturen abgenommen: Eclipse entnimmt sie einfach aus den "package"-Anweisungen und verwaltet den Workspace entsprechend (vor den Augen des Benutzers versteckt). Ändert man jetzt von Hand im Quellcode einige package-Anweisungen, kommt IMHO Eclipse ziemlich durcheinander, das hast Du ja erlebt. Die Umverteilung von einem Package auf andere sollte man stattdessen über das Eclipse-Menü (die erwähnten Refactor-Funktionen) machen, dann kann Eclipse den Workspace konsistent "umformen".
     
  12. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Danke, genau so hab ich das gemeint!

    Ist immer hart, sich ohne konkretes Material abstrakt über solche Probleme zu unterhalten, ohne so in Fachjargon abzudrifften, dass das Gegenüber garnix mehr rafft.

    Gruß,

    .commander
     

Diese Seite empfehlen