Hallo,
ich habe bisher schon einige Java-Programme geschrieben. Allerdings immer mit Eclipse unter Windows.
Jetzt muss ich ein Java-Tool für eine Linux-Umgebung schreiben. Die Entwicklungsumgebung kann ich nicht auf dem Linux-Rechner installieren. Ich schreibe also wie gehabt in Eclipse ein java-File und kopiere es via ftp auf den Linux-Rechner.
Dort will ich die Datei jetzt compilieren und ausführen.
Auf dem Rechner ist leider noch kein Java installiert und ich scheine schon an dieser scheinbar leichten Aufgabe zu scheitern.
Meine Frage ist: Was habe ich noch nicht gemacht (oder falsch gemacht), was ich machen müsste?
Mein bisheriges Vorgehen:
-j2sdk für Linux runtergeladen und auf dem Linux-Rechner unter ~/Jens/ installiert
-follgende Befehle ausgeführt:
-export JAVA_BINDIR=~/Jens/j2sdk1.4.2_13/bin
-export JAVA_HOME=~/Jens/j2sdk1.4.2_13
-export JDK_HOME=~/Jens/j2sdk1.4.2_13
-export JRE_HOME=~/Jens/j2sdk1.4.2_13
-export JRE_HOME=~/Jens/j2sdk1.4.2_13
-export PATH=~/Jens/j2sdk1.4.2_13/bin:$PATH
Da ich von Linux keine Ahnung habe und Eclipse solche Einstellungen unter Windows nicht erforderlich macht, hab ich keine Ahnung, was ich da gemacht habe. Ich hab einfach irgendwo gelesen das ich so vorgehen muss.
Leider funktioniert es nicht:
javac test.java meldet keinen Fehler
java test.class meldet:'Exception in thread "main" java.lang.NoClassDefFoundError: Main/class'
die ressourcen des Linux-Rechners reichen nicht aus.
Außerdem darf ich da nicht so viel drauf installieren. Es ist nicht mein Rechner.
Ich mache ein Projekt im Laufe meines Studiums. Dafür habe ich den Rechner zur verfügung gestellt bekommen. Da noch andere darauf arbeiten, sind die Möglichkeiten begrenzt.
Nö, ist nicht schwierig. Einfach in die CLASSPATH Variable eintragen.
Ich finde einfach das die Konsole für größere Sachen ungeeignet ist.
Mit vim kannst du auch direkt kompilieren, und das ist mit Sicherheit schon drauf.
Bei größeren Projekten wirds unhandlich. Du könntest aber ant verwenden. Damit kannst du auch größere Projekte relativ schnell bauen. Musst halt ein Buildskript erstellen.
Ansonsten, wenn du nur eine Klasse hast und diese sich im aktuellen Verzeichnis befindet:
Code:
java -cp . <klasse>
Kannst dir auch einen alias dafür anlegen:
Code:
alias java='java -cp .'
dann brauchst du das -cp . nicht immer mit angeben.
Naja, ich denke schon, dass das ein größeres Projekt wird. Also ist die Idee vieleicht nicht so schlecht. Ich schau mal, was dieses vim ist. Scheint ja änlich vi zu sein. Vieleicht kann mir das die Arbeit etwas erleichtern.
Im Vergleich zu vi? Doch, ziemlich sogar. Man muss halt mit vi klar kommen.
Trotzdem empfehle ich dir eher Buildskripte mit ant zu erstellen. Die kannst du dann immer wieder aufrufen. Macht wesentlich mehr Sinn, als einen Editor zu verwenden, obwohl man eigentlich nur kompilieren will.
Auf einem solchen Rechner sollte aber make zu finden sein - nicht so nett wie ant - aber funktioniert auch. Und zur Not tut es sicher auch ein kleines Shell-Script.
Ach, nochwas... Warum überhaupt die Mühe wenn doch eh nicht auf dem Rechner entwickelt wird? Es reicht doch völlig dann hin und wieder das jar oder die class-Files auf den Rechner zu schieben. Oder habe ich da jetzt was falsch verstanden?
auf der Maschine, weil es später auf einer ähnlichen laufen muss. Das heißt Linux. Das heißt c++ Biblios unter Linux.
Ich muss von dem Java-Tool aus auf c++ -Biblioteken zugreifen. Diese befinden sich auf dem Linux-Rechner. Also denke ich, das ich die Java-Dateien nicht auf meinem Rechner Compilieren kann. Oder kann ich auch ohne diese c++ Files compilieren? Da kommt dann wahrscheinlich ein Fehler, weil er die Biblios nicht findet!?
Also ANT läuft. Ich versteh zwar nicht ganz, was ich da in meine build.xml reingetippt habe, aber es wird ein jar-File erzeugt.
Leider kommt beim Ausführen der Datei folgender Fehler:
java testpro
Exception in thread "main" java.lang.NoClassDefFoundError: testpro
Kann es sein, das es mit dem Fehler zusammenhängt, den ich beim Ausführen der class-Files hatte?:
java test
Exception in thread "main" java.lang.NoClassDefFoundError: test
Das Problem hatte ich so gelößt, das ich statt "java test" einfach "java -cp ~/Jens/ test" aufgerufen habe.
Die VM kann die Klasse nicht finden, die du ausführen möchtest.
Der Anzatz mit -cp ist genau richtig. Überprüf wo genau deine Klasse liegt und schreibe den Pfad
in den Aufruf. Wenn die Klasse in einem JAR liegt, muss du dieses angeben.
Du mußt natürlich Groß- und Kleinschreibung beachten, aber das weißt du ja sicherlich.
Code:
java -cp ~/Jens/ testpro
oder
java -cp ~/Jens/testpro.jar testpro