Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>experimentelle Portierung java 1.5 auf Mac OSX 10.3.*

experimentelle Portierung java 1.5 auf Mac OSX 10.3.*

hoppelmoppel03.05.0515:33
btw: requirements sind die konsole und paar commands, wie cp, mv, rm, sudo .. blahh
tutor richtet sich an leute de bisschen mit java programmiern wollen, und dazu die bibliotheken und den compiler brauchen
es ist nicht dafür gedacht das ganze System auf 1.5 umzustellen

Wie manche wisen gibt es java 1.5 nur für Tiger und da mich das nervt, da ich es für die uni brauchen würde, und nicht immer zwischen linux rechner und dem iBook switchen wollte, hab ich es mal portieren probiert.
Die JDKs sind ja nicht ganz plattformunabhängig und somit ist es bisschen tricky und seeehr experimentell Aber meine ersten Tests funktionieren eigentlich . Wahrscheinlich nur aus dem Grund, weil ich nicht alle funktionen von java nutze.
Jedenfalls hat ja Apple gestern ne 1.5er Version für Tiger zum download freigegeben:

Der Installer prüft ja leider auf die OS version, also war mein erster Gedanke das file ~/Desktop/Java15Release1.pkg/Contents/Resources/VolumeChecker zu bearbeiten. Das ist nen perl File mit verions checker. Also hab ich mal einen kleinen Eintrag von 10.4 auf 10.3 umgestellt. Und schon war die erste Hürde geschafft. Leider bricht der Installer intern mit einer Fehlermeldung ab. Weiß nicht wie man das debuggen könnte, aber wahrscheinlich ist es e besser so. Da sonst noch etwas im OS überschrieben oder zerstört wird, was noch wichtig waere
Naja, danach hab ich mich auf die suche nach den jar packages gemacht, und fand unter ~/Desktop/Java15Release1.pkg/Contents die Datei Archiv.pax.gz. Und da drinn sind alle File die von nöten sind. Also mal nen gunzip Archiv.pax.gz gemacht und schon war es dekomprimiert, aber leider noch immer nen komisches archiv file (Archive.pax). Also hab ich mal gegoogelt was dieses pax ist. Und das hat mich zum unix befehl pax(packen und entpacken von archiven) gebracht. Mal in der manpage geschnüffelt und auf dieses example gefunden:
The command:
pax -r -pe -U root -G bin -f a.pax
will extract all files from the archive a.pax which are owned by root
with group bin and will preserve all file permissions.
Ein bisschen umbiegen und den Teil mit user und group rauschmeissen und schon kann man das file entpacken.
also: pax -r -pe -f Archive.pax
für was dieses -pe ist weiß ich nicht, war zu faul zum nachlesen.
So nun entpacket finden sich im akuellen Ordner System dirs und solche Sachen.
Die verschiedenen jdks findet man ja unter:
/System/Library/Frameworks/JavaVM.framework/Versions
also bietet es sich an, die 1.5er Version dort reinzukopiern.
Also muss man nur in den lokal erstellten System ordner reingehn, runter bis zu Versions und am besten gleich alles von dort nach
/System/Library/Frameworks/JavaVM.framework/Versions als root kopieren (manche müssen vielleicht mit sudo arbeiten). So dieser part wäre eigentlich geschafft, ich hab nur die 1.5er dirs verschoben, da ich mir nicht sicher bin was der ganze andere kram macht. Aber da man ja nur paar java bins (wie java, javac, javadoc ..) braucht sollte das eigentlich als workaround reichen.
So ok, nun hat man mal die bins und die jars am richtigen ort. Wer ne IDE (wie jbuilder) benutzt der muss noch nen kleinen Systemlink erstellen zumindest war es bei mir so. Ich hab unter:
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
solch einen link erstellen müssen:
bin Commands/
, da der jbuilder danach gefragt hat
also mit:
ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/bin
erster path ist source 2ter ist target.
Danach hab ich in der IDE selbst noch das jdk richtig linken müssen.
Er gibt beim kompilieren eine Warning aus, aber für das kenn ich mich zuwenig aus
HotSpot not at correct virtual address. Sharing disabled.
Aber es funktioniert trotzdem.

So wer mehr unter der Konsole kompiliert, der sollte sich ein script schreiben wie er die java und javac links umbiegt. Diese sind ja aktuelle auf java 1.4.* gelinkt (überprüfen mit java -version).
also zb sowas:

Code:

#!/bin/sh

temp1=`ls -l /usr/bin/java | grep 1.5`
echo temp1: $temp1
if [ -z "$temp1" ]
then
echo "linkining to java 1.5"
CLASS=/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 $CLASS
else
echo "linkining to java 1.4"
CLASS=/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 $CLASS
fi


das ist nen bashscript welches automatisch die versionen + den classpath zwischen 1.4 und 1.5 switched. Das braucht man nur mehr mit chmod 755 executalbe machen und nen link setzen, oder mit sh "name" ausführen.

Naja, vielleicht kann den kram der eine oder andere gebrauchen weiß nicht mal ob das legal ist XD
0

Kommentare

hoppelmoppel05.05.0513:38
interessiert wohl keinem, dacte dass eigentlich mehrere von der java politik genervt sind
0
Christian Fries05.05.0514:15
Ich bin - wie Du meinen Posts zu dem Thema hier entnehmen kannst - total pissed von der Apple Java Politik. Und ich kenne nur einen Entwickler, der die gut findet - MacMark.

Aber ich habe nun Tiger... und sogar wegen Java 1.5. Dein Tipp ist prima.
0
Christian Fries05.05.0514:26
Das "Umbiegen" kann man unter Tiger mit dem Java Dienstprogramm machen (dort die JVM Version wählen). Geht das unter Panther nicht?
0
hoppelmoppel05.05.0514:36
Hmm, ich weiß es nicht mal ob es so nen Dienstprogramm unter Panther gibt .. ich glaube einer von dem pq apple forum hat gsagt, dass das bei ihm unter tiger mit dem dienstprogramm nicht funzt ..
aba wieso soll ich de arbeit nem pogramm(wenn ich es nich mal kenne XD) machen lassen, wenn es so sicher geht ..
kann sein dass es sogar noch ne schönere lösung gibt in dem man den /System/Library/Frameworks/JavaVM.framework/Commands/ path eventuell ersetzt aber da bin ich mir nicht sicher obs reicht wenn man aus dem 1.5er folder den commands folder rauskopiert
0
stiffler
stiffler05.05.0514:36
Christian Fries
Das "Umbiegen" kann man unter Tiger mit dem Java Dienstprogramm machen (dort die JVM Version wählen). Geht das unter Panther nicht?

Leider nicht, das Dienstprogramm startet nicht.
„To understand recursion you need to understand recursion“
0
hoppelmoppel05.05.0514:37
aber ... eigentlich richtet sich das ganze ja an die panther nutzer .. deswegen frag ich mich auch warum sich da keiner meldet .. sind ja wohl nicht alle schon umgestiegen ..

theoretisch ist es ja auch möglich java 1.5 auf allen mac os versionen so zu portieren .. solange man die pfade anpasst ..
0
jonez
jonez05.05.0514:51
Wahrscheinlich wird das Thema für viele erst aktuell, wenn ein wichtiges Programm nur noch mit 1.5 läuft - ist doch noch nicht so, oder?

Dann wird Dein Thread rausgekramt und ganz glücklich darüber gelächelt.
0
hoppelmoppel05.05.0515:00
sollte sich eigentlich an die java entwickler richten
0
hoppelmoppel05.05.0515:01
ah verschoben worden, kein wunder dass ich den thread nicht gfunden habe
0
freidenker08.05.0519:38
Ops, wenn die genannte Fehlermeldung "sharing disabled" geworfen wird ist die Javainstallation aber ganz schön zerschossen. Einige Programme dürften dann gar nicht mehr funktionieren oder werden nur noch sehr langsam ausgeführt. Pather ist einfach nicht gemacht für Java 1.5.

Mehr Infos zu dem Problem und wie man es wieder hinbekommt gibt es auch hier:
0
hoppelmoppel09.05.0502:14
Uhm, wennst du es genau lesen wuerdest, dann würdest drauf kommen, dass es nie richtig installiert wurde/wird
Und ja das mit der HotSpot meldung weiß ich schon, nur leider funktioniert es bei mir zumindest nicht so .. hab das schon ausprobiert, was se meinen.
Und dieses java ist nicht dafür gedacht, dass es 1.4 ersetzt, hat selber apple gschrieben. Und hier is es relativ egal, solange es fuer Kompilationszwecken so halbwegs funktioniert Ist ja nur für entwickler gedacht.
0
freidenker09.05.0504:16
Achso und ich dachte du willst es nach dem kompilieren auch noch ausführen
0
hoppelmoppel09.05.0512:45
vielleicht
0
Kekserl
Kekserl17.10.0516:39
grummel, grummel...

jetzt isses tatsächlich soweit, der thread wird ausgegraben. bin immer noch panther- nutzer und hab nicht vor, umzusteigen.
da is dieser workaround natürlich ganz hilfreich, werds mal ausprobieren.

dass jdk 1.5 für panther nicht verfügbar is, verstehe ich allerdings wirklich nicht....
„fürzlbürzl...“
0
hoppelmoppel17.10.0523:42
Naja, soll wohl auch ein grund dafür sein, auf tiger umzusteigen ....
btw .. bei ein paar swing bibliotheken gibts probleme, zumindest bei mir .
0
smile
smile18.10.0500:57
was Apple in Sachen Java im letzten halben Jahr abgezogen hat ist vorsichtig ausgedrückt beschämend. Das 1.5 Release von Sun ist schon seit Ewigkeiten raus und Apple gurkt immernoch mit einer Version durch die Kante die dem Beta Stadium noch nicht entkommen ist (Performance, GC ...) tzz....

<grummel>
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
Kekserl
Kekserl18.10.0502:53
also gibts keine möglichkeit, auf "normalen" wege jdk 1.5 unter panther zu nutzen?
„fürzlbürzl...“
0
hoppelmoppel18.10.0522:45
uhm, ne
0

Kommentieren

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