JAVA Importieren von klassen

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Nach 2 Wutanfaellen und endlichen Fehlversuchen bin ich endlich darauf gekommen das ich wenn ich eine Klasse nutzen will, auch wenn sie in dem gleichen Verzeichniss liegt ich den sourcepath an javac uebergeben muss.
Und wenn ich da noch Packages einfuege muss den Pfad nur bis zum Anfang der Packages machen.
Mein Problem ist es nun das ich kein Bock habe jedesmal den Quellpfad mitanzugeben, und waere fuer jeden Ratschlag dankbar wie ich das beheben kann, zumal mir das Problem mit sicherheit auch in C/C++ begegnen kann ,aber da ist es ja nur halbsowild, da man da auch in die Dateien die Pfade reinschreiben kann und diese nicht jedesmal beim Kompelliere mituebergeben muss.
Ich weiss zwar das ich eine Variable um ein paar Werte erweitern muss, aber ich weiss nicht welche.
System, ist Fedora 7.
mfg

sw33t
 
Also wenn du ne Klasse Test1.java hast in Verzeichnis /X/Y/Z dann machst du einfach folgendes:
Code:
cd /X/Y/Z
javac Test.java

Klassen, die Test.java verwendet (ob in packages oder nicht) werden automatisch mit-kompiliert.
 
stimmt nicht.
Wenn ich in einem Verzeichniss bin wo ich eine Hilfdatei habe, und diese dann in Bytecode umwandele ,dann wird nur diese umgewadelt, und wenn ich dann die Hauptdatei kompelliere, waeren ich dann in dem Verzeichniss der Hilfsdate bin,habe ich nicht ausprobiert, aber das istauch nicht fuermich brauchbar, denn wenn ich mal ein groesseres Projekt mit 1,2 oder 3 dutzend Hilfsdatein kompellieren muss dann geht dass wieder nicht.
Unter Windows hatte ich nie das Problem,aber das habe ich ja nun nicht mehr.
Die Variable hiess dort glaube Ich ClassPath, aber unter Fedora gibt es diese Variable nicht.
mfg

sw33t
 
Eigentlich sollte es reichen, wenn der CLASSPATH korrekt gesetzt ist. Diese wird normalerweise als Umgebungsvariable gesetzt.
 
Diese wird bei mir aber nicht gesetzt.
echo $CLASSPATH gibt nichts zurrueck.
unter set wird sie noch nichteinmal ausgefuehrt.
Wenn ich sie also setze muss ich sie jedesmall neu setzen und das ist irgendwie genaus nervend wie als wenn ich jedesmal
javac -sourcepath $PWD /Pfad vom Packet/datei.java eingeben muss
mfg

sw33t
 
Wenn du deine Projekte mit Ant baust und in eine Jar Datei pakst, kannst du den classpath auch in der Manifest Datei angeben:


Code:
Class-Path: jar1-name jar2-name directory-name/jar3-name


Ant kann das für dich übernehmen.
 
Ja nee bashrc oder bash_profile..
haette ich auch drauf kommen muessen.
Ich wollte das aber aus irgendeinem Grund gestern dynamisch setzen also, jedweils immer das Verzeichnis in welchem in drin bin als Classpath nehmen und das ohne das ich das Dingen jedesmal exportieren muss bzw einfach nur neu stezen muss.
Danke.
mfg


sw33t
 
Hm, das dürfte wohl auch einer der Gründe sein warum Leute die professionell Software mit Java entwickeln zu Eclipse mit Ant oder Maven greifen. Diese Tips in irgendwelchen Tutorials mit Texteditor und auf der Shell anzufangen halte ich für vollkommenen Bockmist. Man muss sich das Leben nicht schwerer machen als es ist. Bei Softwareentwicklung kommt es bestimmt nicht darauf an ellenlange Shellbefehle fürs Komplilieren schreiben zu können.

Gruß odigo
 
stimmt nicht. Wenn ich in einem Verzeichniss bin wo ich eine Hilfdatei habe, und diese dann in Bytecode umwandele ,dann wird nur diese umgewadelt, und wenn ich dann die Hauptdatei kompelliere, waeren ich dann in dem Verzeichniss der Hilfsdate bin,habe ich nicht ausprobiert, aber das istauch nicht fuermich brauchbar, denn wenn ich mal ein groesseres Projekt mit 1,2 oder 3 dutzend Hilfsdatein kompillieren muss dann geht dass wieder nicht.

Wenn du eine "Hauptklasse" hast, die die "Hilfsklassen" benutzt, werden die Hilfsklassen automatisch mit-kompiliert wenn du die Hauptklasse kompilierst. Vorrausgesetzt du hast die Hilfsklassen nicht in Unterverzeichnissen. Wenn das der Fall ist und die die Package-Namen richtig angibst in den einzelnen File dann funktioniert es wieder.

Die Variable CLASSPATH brauchst du zum entwickeln nicht. Wenn dein JRE/JDK korrekt installiert ist, dann ist damit schon alles okay. Bei mir ist CLASSPATH leer und alles funktioniert trotzdem ;) Weiss der Henker wie das hier unter Ubuntu funktioniert...

Die Option -cp brauchst du nur wenn du JAR-Dateien mit einbinden willst - also wegen mir die SwingX API oder Apache MINA oder sowas in deinem Projekt benutzen willst.
Code:
javac -cp ./libs/apache-mina.jar MyMainClass.java

Die Option -sourcepath brauchst du meines Wissens nach nur dann, wenn sich deine Konsole grad in einem anderen Verzeichnis befindet, als dem SourcePath.

Code:
.../MyProject
|---bin
|---src
|---libs
|---docs

Wenn du jetzt mit der Konsole in .../MyProject bist und willst kompilieren müsstest du als SourcePath ./src angeben. Aber nagel mich da jetzt nicht fest - ich hab das noch nie gebraucht.
 
O.k. vielen dank fuer die Hilfe und den Hinweisen wann ich welche Optionen gebrauchen sollte.
Bezueglich Eclipse:
Mein System hat nicht genug RAM.
Bei 512MB, ist schnell sense wenn man Compelliert Musik hoert, chattet, und wie ein Irrer Daten hin und her kopiert und 2 verschluesselte Partitionen im Dateisystem hat welche auch noch gelesen/beschrieben werden.
mfg

sw33t
 
Zurück
Oben