PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Programme starten unter Linux



einherjar
25.08.04, 20:37
Hallo,

ich scheine leider nicht in der Lage zu sein, Javaprogs unter Linux zu starten.

Nun habe ich natürlich die Suche benüht und dieses:

http://www.torsten-horn.de/techdocs/java-install.htm#InstallationUnterLinux

und dieses:

http://www.linuxforen.de/forums/showthread.php?t=35241

gefunden.

Aber shit happens, es geht nicht.

Ich habe also das J2SDK runtergeldan und dann mit sh jav.. installiert.
Das ist dann unter usr/java installiert.

DAnn habe ich 12. ine neue Datei mit dem Namen 'profile.local' und folgendem Inhalt erzeugt:
JAVA_BINDIR=/usr/java/j2sdk1.4.0/bin
JAVA_HOME=/usr/java/j2sdk1.4.0
JDK_HOME=/usr/java/j2sdk1.4.0
JRE_HOME=/usr/java/j2sdk1.4.0
PATH=`echo $PATH|sed 's|:/usr/lib/java/bin|:/usr/java/j2sdk1.4.0/bin|'`
export JAVA_BINDIR
export JAVA_HOME
export JDK_HOME
export JRE_HOME
export PATH

erzeugt. NAtürlich mit dem richtigen Pfadnamen.

Aber was soll ich sagen?
echo $PATH
ergibt leider, daß der Pfad nicht verfügbar ist.
Auch mit ln -s /opt/j2re-1.4.2/bin/java /usr/local/bin/java
hat es nicht geklappt.
Wenn ich nun in der Konsole java -version eingebe...geht nicht.


Nun bin ich mit meinem Anfängerlatein am Ende. Ich hoffe jemand hier kann mir helfen.
Ich nutze das Suse 9.1 Prof.
Das J2SDK benötige ich, weil ich Javaentwickler bin. Nur um der Frage vorzubeugen, warum ich nicht nur das J2RE nehme.

Grüße

einherjar.

ciedan
25.08.04, 20:46
Mahlzeit,

hast du wirklich die Korrekten Pfadangaben eingegeben? Denn unten benutzt du einmal 1.4.0 und dann wieder 1.4.2

bis denn
ciedan

einherjar
25.08.04, 22:30
Mahlzeit,

hast du wirklich die Korrekten Pfadangaben eingegeben? Denn unten benutzt du einmal 1.4.0 und dann wieder 1.4.2

bis denn
ciedan

ich habe das nur von der einen seite reinkopiert. Ich hatte das allerdings bei mir am Rechner durchaus durch den richtigen Pfad ersetzt.
Daran wird es also wohl niht liegen.

Fällt sonst keinem was ein??

Alexiel
25.08.04, 23:12
geht es generell nicht oder gehts dir um den Pfad? ansonsten mal so probiern:

1.) ins Quellenverzeichnis wechseln: cd /home/du/sources/proj1/src/

2.) set CLASSPATH=.

3.) /usr/java/j2sdk1.4.2/bin/javac Main.java

4.) /usr/java/j2sdk1.4.2/bin/java Main

temir
26.08.04, 07:18
@einherjar: zur Vereinfachung würde ich folgendes vorschlagen:

/usr/lib/java -> /usr/java/j2sdk1.4.0
(Symlink).

/etc/profile.local
# -- start --
JAVA_BINDIR=/usr/lib/java/bin
JAVA_HOME=/usr/lib/java
JDK_HOME=/usr/lib/java
JRE_HOME=/usr/lib/java/jre # stimmt's?
CLASSPATH=/usr/lib/java/lib/tools.jar:/usr/lib/java/dt.jar
PATH=$PATH:/usr/lib/java/bin
#
export JAVA_HOME JAVA_BINDIR JDK_HOME JRE_HOME CLASSPATH PATH
# -- end --

Wenn die neue Java-Version kommt, muss man nur den Symlink 'umbiegen'.

einherjar
26.08.04, 08:02
Langsam krieg ich wirklich Zweifel, ob das mit der Plattformunabhängigkeit von Java nicht ein Witz ist.
Es scheint als wäre M$ die einzige Plattform, auf der man Javaprogramme tatsächlich ausliefern kann.
Wenn ich mir den Wust angucke, den ich veranstalten muß damit Linux überhaupt mal ein Javaprogramm starten, muß ich mich doch sehr wundern.

Aber gut(oder schlecht), das Problem sollte sich doch irgendwie lösen lassen.

Ich habe jetzt alles mal neu probier.

Hier der Inhalt meiner /etc/profile.local:

JAVA_BINDIR=/usr/java/j2sdk1.4.2_05/bin
JAVA_HOME=/usr/java/j2sdk1.4.2_05
JDK_HOME=/usr/java/j2sdk1.4.2_05
JRE_HOME=/usr/java/j2sdk1.4.2_05
PATH=`echo $PATH|sed 's|:/usr/lib/java/bin|:/usr/java/j2sdk1.4.2_05/bin|'`
export JAVA_BINDIR
export JAVA_HOME
export JDK_HOME
export JRE_HOME
export PATH

Diese habe ich übrigens als Textdatei erstellt, und dann einfach profile.local genannt. Vielleicht muß man da einen Trick anwenden? Oder muß ich dem System irgendow sagen das es diese Datei beachten soll?
Die war nämlich vorher nicht da.

Also jedenfalls geht es damit nicht...

Nun habe ich alles mal einzeln in die Konsole eingegeben:

linux:/ # JAVA_BINDIR=/usr/java/j2sdk1.4.2_05/bin
linux:/ # JAVA_HOME=/usr/java/j2sdk1.4.2_05
linux:/ # JDK_HOME=/usr/java/j2sdk1.4.2_05
linux:/ # JRE_HOME=/usr/java/j2sdk1.4.2_05
linux:/ # PATH=`echo $PATH|sed 's|:/usr/lib/java/bin|:/usr/java/j2sdk1.4.2_05/bi n|'`
linux:/ # export JAVA_BINDIR
linux:/ # export JAVA_HOME
linux:/ # export JDK_HOME
linux:/ # export JRE_HOME
linux:/ # export PATH
linux:/ # java -version
bash: java: command not found
linux:/ # PATH=$PATH:/usr/lib/java/j2sdk1.4.2_05/bin
linux:/ # java
bash: java: command not found
linux:/ # java -version
bash: java: command not found
linux:/ # export MANPATH=$JAVA_HOME/man:$MANPATH
linux:/ # java -version
bash: java: command not found


Wie man sieht ohne Erfolg....

Dann habe ich das probier, habe ich aus dem Buch Java Software Engineerung unter Linux:

olli@linux:~> export JAVA_HOME=usr/java/j2sdk1.4.2_05
olli@linux:~> export PATH=$JAVA_HOME/bin:$PATH
olli@linux:~> export MANPATH=$JAVA_HOME/man:$MANPATH
olli@linux:~> java -version
bash: java: command not found
olli@linux:~>


Auch Banane.

Und nu bin ich wirklich am Brechen. Ich wollte eigentlich dauerhaft zum Softwareentwickeln auf Linux umsteigen. Aber irgendwie sehe ich das leider mittlerweile scheitern.
Vielleicht kann mir hier ja noch jemand den entscheidenden Tipp geben, woran es liegen könnte.

Hate
26.08.04, 08:40
Langsam krieg ich wirklich Zweifel, ob das mit der Plattformunabhängigkeit von Java nicht ein Witz ist.
Es scheint als wäre M$ die einzige Plattform, auf der man Javaprogramme tatsächlich ausliefern kann.
Wenn ich mir den Wust angucke, den ich veranstalten muß damit Linux überhaupt mal ein Javaprogramm starten, muß ich mich doch sehr wundern.

Hast du wenigstens mal probiert, java mit dem komplette Pfad aufzurufen, damit du siehst, ob es überhaupt geht, unabhängig von irgendwelchen Pfadsetzungen?

Hast du schon mal überlegt, das es vielleicht nicht an Java, sondern an Suse liegt? Nicht, das ich das beweisen könnte, mich würde nur mal interessieren, wie du es wiederlegen kannst :ugly: Nur weil du Java nicht installiert bekommst (als Javaentwickler wohlgemerkt), heißt das noch lange nicht, das es nicht plattformunabhängig ist.

Seitdem ich mal jemanden über IRC helfen mußte, dabei dieser ein Programm unter Suse von der Konsole durch aufrufen von "Programmname" starten konnte, der Befehl "which Programmname" das Programm aber nicht gefunden hat, bin ich bei Suse übervorsichtig geworden. Traue nichts und niemanden.




linux:/ # PATH=$PATH:/usr/lib/java/j2sdk1.4.2_05/bin
linux:/ # java
bash: java: command not found

Müßte es nicht heißen



export PATH=$PATH:/usr/lib/java/j2sdk1.4.2_05/bin


:confused: Und wenn du schon manuell Pfade setzt, warum nicht dahin, wo die Dateien auch wirklich liegen? Weiter oben hast du doch stehen, das java bei dir in /usr/java/j2sdk1.4.2_05/ liegt, demzufolge müßte die obigen Anweisung doch eigentlich



export PATH=$PATH:/usr/java/j2sdk1.4.2_05/bin


lauten. Bist du dir eigentlich sicher, was du da alles machst? Irgendwie verwirrst du mich etwas. Bist du ganz sicher, das in /usr/java/j2sdk1.4.2_05/bin eine ausführbare Datei mit Namen java liegt? Dann müßte die obige Exportanweisung zumindest für ein java -version genügen.

P.S. Dieser Beitrag enthält persönliche Meinungen und Erfahrungen, die u. U. jeglicher Beweisführung entbehren können.

einherjar
26.08.04, 11:25
Hast du wenigstens mal probiert, java mit dem komplette Pfad aufzurufen, damit du siehst, ob es überhaupt geht, unabhängig von irgendwelchen Pfadsetzungen?



Ja, geht auch nicht. Wenn ich in das Verzeichnis wechsle und Java aufrufe geht es auch nicht.



Nur weil du Java nicht installiert bekommst (als Javaentwickler wohlgemerkt), heißt das noch lange nicht, das es nicht plattformunabhängig ist.


1. Das wohlgemerkt ist wohl fehl am Platze. Ich habe bisher ausschließlich unter Win gearbeitet. Und das hier vorliegende Problem hat wohl Linux spezifische Gründe.
2. Plattformunabhängig ist es natürlich. Aber was hilft es, wenn der Kunde oder Anwender das Prog nicht zu laufen bekommt, weil man Java nur unter Windows vernünftig installieren und benutzen kann?





Bist du dir eigentlich sicher, was du da alles machst? Irgendwie verwirrst du mich etwas. Bist du ganz sicher, das in /usr/java/j2sdk1.4.2_05/bin eine ausführbare Datei mit Namen java liegt? Dann müßte die obige Exportanweisung zumindest für ein java -version genügen.


1. Nein ich bin mir nicht sicher was ich da mache. Ich bin absoluter Linuxanfänger.

2. In /usr/java/j2sdk1.4.2_05/bin liegt eine ausführbare Datei namens Java. Aber vielleicht gibt es ein Rechteproblem beim Starten. Aber dann sollte er ja nicht sagen "befehl unbekannt" oder so. Sondern "sie haben nicht die rechte".
Auch geht es als root nicht. Und der sollte die Rechte zum starten vonausführbaren Dateien ja haben...

Aber in wie fern das an Suse liegen kann weiß ich nicht.

Who-T
26.08.04, 12:33
Ja, geht auch nicht. Wenn ich in das Verzeichnis wechsle und Java aufrufe geht es auch nicht.


es gibt hier zwei möglichkeiten


cd /usr/lib/java/j2sdk1.4.2_05/bin
java

und


cd /usr/lib/java/j2sdk1.4.2_05/bin
./java

ersteres wird nicht funktionieren, zweiteres schon.
wenn zweiteres auch nicht funktioniert, dann haperts and deiner java installation




[...]Aber was hilft es, wenn der Kunde oder Anwender das Prog nicht zu laufen bekommt, weil man Java nur unter Windows vernünftig installieren und benutzen kann?

mit solchen aussagen wär ich vorsichtig. java kann man unter linux schnell und vernünftig installieren und benutzen. meiner meinung nach ist es so, dass der installationsprozess unter windows verwirrender ist als unter linux.
aber das ist eine persönliche meinung und daher abhängig von meiner erfahrung, wie deine probleme abhängig von deiner erfahrung sind.




Auch geht es als root nicht. Und der sollte die Rechte zum starten vonausführbaren Dateien ja haben...

falsch. auch root kann nichtausführbare dateien nicht ausführen. er kann lediglich dateien ausführen,
die zwar ausführbar sind, aber nicht ihm gehören
(war das jetzt verständlich?)


meiner erfahrung nach (java auf unterschiedlichen systemen (mandrake, suse, debian) installiert) ist alles was du tun musst (nach der installation von java)


ln -s /<java-dir>/bin/java /usr/bin/java
ln -s /<java-dir>/bin/javac /usr/bin/javac
ln -s /<java-dir>/bin/javadoc /usr/bin/javadoc
ln -s /<java-dir>/bin/jar /usr/bin/jar


und das wars
die ganzen pathes usw hab ich noch nie setzen müssen.

kanazuchi
26.08.04, 12:33
Servus,

also ich weiß ja nicht, was du da machst, aber für mich höhrt dich das ziemlich suspekt an. Deswegen hier mal ein paar Fragen:


Welches Paket hast du denn von Sun runtergeladen? Mit dem rpm-Paket hatte ich auch so meine Probleme.
Wie hast du denn Versucht java auszuführen, als du im Verzeichnis warst? Mit
xypher@mars-base bin $java oder
xypher@mars-base bin $./java?


Ich habe das bei mir so gemacht (als ich noch unter SuSE unterwegs war). Das bin-Paket runtergeladen, mit
chmod +x java...binausführbar gemacht und dann mit
./java...bin(im selben Verzeichnis wohlgemerkt) ausgeführt.
Dann, unter KDE, den Konqueror im Systemverwaltermodus gestartet und das entpakte Java nach
/opt/javaverschoben.
Dannach mit einem Editor deiner Wahl -- und als root -- die Datei [CODE]ld.so.conf[CODE]bearbeitet und

/opt/java
/opt/java/bin

hinzugefügt. Dann eine Shell geöffnet und gut wars.

Alternativ sollte auf der SuSE CD / DVD auch Eclipse drauf sein inkl. Java. Das könntest du dann über Yast installieren.

Gruß
Chris

comrad
26.08.04, 13:23
/opt/java
/opt/java/bin

hinzugefügt. Dann eine Shell geöffnet und gut wars.


in die ld.so.conf gehören nur library-pfade. Der einfachste Weg ist, wie bereits gesagt, der von Distributor ooooder (wurde auch schon gesagt):



ln -s /opt/java/bin/java /usr/local/bin/java
ln -s /opt/java/bin/javac /usr/local/bin/javac
ln -s /opt/java/bin/jar /usr/local/bin/jar


Das dauert ganze 25 Sekunden und schon läuft dein Java. Wenn du im Konqueror oder im Nautilus noch einstellst, dass er JAR-Dateien mit java -jar öffnen soll, kannst du Java Programme sogar doppelklicken und starten.

comrad

kanazuchi
26.08.04, 14:12
in die ld.so.conf gehören nur library-pfade...

Und wieder was dazu gelernt; auch wenn es geklappt hat... :ugly:

Gruß

Chris

ThorstenHirsch
26.08.04, 14:50
@einherjar: is bei SuSE 9.1prof denn nicht das SDK von Sun dabei? Haste mal in Yast nachgeschaut? Dann hätteste dir das alles sparen können und wärst mit ein paar clicks am Ziel gewesen.

comrad
26.08.04, 15:20
Und wieder was dazu gelernt; auch wenn es geklappt hat...


Klar, weil in /bin findet er ja keine, die er hinzufügen kann, drum ists ihm egal ;)

Alexiel
26.08.04, 18:50
da läuft einfach irgendwas falsch (ja ich weiss, das habt ihr auch schon gemerkt)


[alexiel@kasumi files]$ rpm -qa | grep -i j2sdk
j2sdk-1.4.2_04-fcs


[alexiel@kasumi files]$ env | grep -i java
PATH=/usr/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/java/j2sdk1.4.2_04/bin:/home/alexiel/bin


[alexiel@kasumi files]$ java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)

einherjar
27.08.04, 15:00
Also, erstmal meinen Dank an alle die mir hier geholfen haben :)

Und dann möchte ich noch kurz schildern wie ich es jetzt zum laufen brachte. Ich bin vermutlich nicht der Letzte der daran mal scheitern wird.
Vielleicht kann das ja noch jemand brauchen:

Java mit Yast weggemacht.

Das java..rpm.bin mit sh java..rpm.bin ausgepackt.
dann rpm -i java...rpm
dann in das Verzeichnis: /usr/java/j2sdk1.4.2_05/bin
gewechselt.

Den Ganzen Summs eingegeben:

linux:/usr/java/j2sdk1.4.2_05/bin # export JAVA_HOME=/usr/java/j2sdk1.4.2_05/
linux:/usr/java/j2sdk1.4.2_05/bin # export PATH=$JAVA_HOME/bin:$PATH
linux:/usr/java/j2sdk1.4.2_05/bin # export MANPATH=$JAVA_HOME/man:$MANPATH
linux:/usr/java/j2sdk1.4.2_05/bin # java -version
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)
linux:/usr/java/j2sdk1.4.2_05/bin # java


ln -s /usr/java/j2sdk1.4.2_05/bin/java /usr/bin/java
ln -s /usr/java/j2sdk1.4.2_05/bin/javac /usr/bin/javac
ln -s /usr/java/j2sdk1.4.2_05/bin/javadoc /usr/bin/javadoc
ln -s /usr/java/j2sdk1.4.2_05/bin/jar /usr/bin/jar


Jetzt geht es. Ich hoffe nach dem Neustart auch nooch :ugly:

Alexiel
27.08.04, 16:38
ich kann mir vorstellen, dass es auch vorher schon ging, wenn du im bin/ gewesen bist.
Wenn dort sich befindliche Binaries nicht im PATH stehen, musst du sie mit ./ aufrufen:


[alexiel@kasumi bin]$ java -version
bash: java: command not found
[alexiel@kasumi bin]$ ./java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)