Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Umschalten der JavaVM

Umschalten der JavaVM

stiffler
stiffler24.08.0513:35
Mahlzeit,

ist es richtig, dass mit dem in java 1.5 mitgeliefertem Tool "java Preferences" die JavaVM umgeschaltet werden kann? Also von 1.4.x auf 1.5 oder andersrum?

Wenn ja, funktioniert es bei mir nicht.
Das Problem: Eclipse läuft mit 1.5 wesentlich besser, Suns JCreator jedoch garnicht.

Da ich letzteren jedoch ab und zu benötige, müsste ich die Javaversion switchen können. Hat jemand eine Idee, wie ich das (komfortabel !) bewerkstelligen könnte?
„To understand recursion you need to understand recursion“
0

Kommentare

planetexpress69
planetexpress6924.08.0514:07
Ich würde in den jeweiligen Startskripten JAVA_HOME auf die VM setzen, die Du bevorzugst.
0
hoppelmoppel24.08.0515:09
du könntest dir ein kurzes bash skript schreiben, das dir zuerst die version prüft und anzeigt, und dann automatisch switcht, oder per aufforderung.
0
stiffler
stiffler24.08.0515:12
Tönt gut. Habe nur leider Mmin letztes BashScript vor ca. 3 Jahren geschrieben

Aber ich werd's mal versuchen.
„To understand recursion you need to understand recursion“
0
MacMark
MacMark24.08.0521:56
stiffler
Ich empfehle "Java für Mac OS X" von Thomas Much. Eine lohnende Investition.
„@macmark_de“
0
stiffler
stiffler24.08.0522:00
MacMark Gibt's da ein Inhaltsverzeichnis irgendwo von? Oder kannst du mir einen kurzen Abriss geben?
„To understand recursion you need to understand recursion“
0
hoppelmoppel24.08.0522:19
Ich weiß nicht ob es reicht nur die JAVA_HOME Variable zu setzen.

Ich habs für Panther etwas radiakaler gelöst

zb so:

#!/bin/sh

temp1=`ls -l /usr/bin/java | grep 1.5`
echo temp1: $temp1
if [ -z "$temp1" ]
then
echo "linkining to java 1.5"
export CLASSPATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/Library/Tomcat/common/lib/servlet-api.jar:/Users/hoppelmoppel/uni/:.
sudo rm /usr/bin/java
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/java /usr/bin/java
sudo rm /usr/bin/javac
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/javac /usr/bin/javac
sudo rm /usr/bin/javadoc
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/javadoc /usr/bin/javadoc
sudo rm /usr/bin/javah
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/javah /usr/bin/javah
sudo rm /usr/bin/javap
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/javap /usr/bin/javap
java -version
echo;echo $CLASSPATH
else
echo "linkining to java 1.4"
export CLASSPATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Classes/classes.jar:/Library/Tomcat/common/lib/servlet-api.jar:/Users/hoppelmoppel/uni/:.
sudo rm /usr/bin/java
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Commands/java /usr/bin/java
sudo rm /usr/bin/javac
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Commands/javac /usr/bin/javac
sudo rm /usr/bin/javadoc
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Commands/javadoc /usr/bin/javadoc
sudo rm /usr/bin/javah
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Commands/javah /usr/bin/javah
sudo rm /usr/bin/javap
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Commands/javap /usr/bin/javap
java -version
echo; echo $CLASSPATH
fi

Hier überprüf ich zuerst auf welche vm java gelinkt ist, und dann lösche und verändere ich die einzelnen links
Ist aber seehr schirch .
Das geht nur wenn wirklich unter /usr/bin links zu den java bins vorhanden sind.
Ne nettere Möglichkeit, auf die ich gerade gekommen bin, wäre einfach die $PATH varliable zu verändern. Also, dass man zb die links unter /usr/bin löscht, dafür aber in die PATH variable das bin Verzeichnis der jeweiligen Maschine einträgt(unter gentoo linux ist das so).
sprich: echo $PATH /sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
export PATH=$PATH:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin/
also sowas in diese Richtung

mfg
0
stiffler
stiffler24.08.0522:39
hoppelmoppel Thx, werds mal versuchen.
„To understand recursion you need to understand recursion“
0
MacMark
MacMark24.08.0523:58
Links verbiegen ist aus zwei Gründen mindestens nicht gut:
a) Beim nächsten Update ist alles wie vorher.
b) Da steckt ein System hinter und Du handelst Dir Seiteneffekte ein.

Wenn man für Shell-basierte Dinge eine spezielle JVM nutzen möchte, dann ruft man die direkt auf mit /System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/Java oder entsprechend andere Version.

Wenn man OS X Programmpakete aus Java erstellt, dann wird die Java-Version in der Info.plist angegeben. Hier kann man sowohl die exakte Version (1.4.2) als auch Angaben wie mindestens Version soundso (1.4+) eingeben. Eventuell kannst Du die plist der betroffenen Programme von Hand ändern nachträglich.

Wenn man für alle Prozesse das JAVA_HOME oder andere Umgebungsvariablen setzen möchte, dann legt man mit dem Property List Editor die Datei ~/.MacOSX/environment.plist an und füllt sie entsprechend.
„@macmark_de“
0
MacMark
MacMark25.08.0500:07
stiffler
MacMark Gibt's da ein Inhaltsverzeichnis irgendwo von? Oder kannst du mir einen kurzen Abriss geben?

Der gute Mann hat Leseproben etc. auf seiner Seite verlinkt hier:
www.muchsoft.com/java

Falls er (Thomas Much) das hier liest: Cooles Buch, danke dafür
„@macmark_de“
0
hoppelmoppel25.08.0515:35
Hab nie gesagt, dass es ne schöne lösung ist btw .. Seiteneffekte.. so oft wie mal von apple nen java update rauskommt, ist mir das relativ egal. Mann kanns ja wieder neu einrichten

Btw, bei mir ist es damals darum gegangen, überhaupt 1.5 unter panther zum laufen zu bekommen ...

Und ich glaube, meine terminals ... ignorieren die JAVA_HOME Variable dezent , bin mir aber atmnicht sicher.
0
Manuel
Manuel01.09.0512:05
Das folgende Script sollte helfen:
http://lists.apple.com/archives/java-dev/2005/Aug/msg00516.html

Gruß
Manuel
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.