# [Tests] changer le JDK via les préférences systèmes



## molgow (3 Mars 2006)

Hello tous!

Apple ne propose aucun moyen de changer le JDK par défaut. Même si Java 1.5 est installable sur Mac OS 10.4, il n'y a aucun moyen simple de pouvoir utiliser véritablement ce JDK lorsque nécessaire. 

J'ai donc développé (rapidement: 2.5j de dév à 100%) un petit panneau de préférence permettant de changer facilement et rapidement la JDK utilisée. En quelques clics il est donc possible de changer la version de java utilisée lorsque vous tapez "java" ou "javac" (par exemple) dans un Terminal.

Le software est encore en développement et j'ai donc besoin de votre aide pour le tester et pour l'améliorer. Sur mon Mac Intel, je n'ai détecté aucun problème. De part la nature du logiciel, *je cherche des testeurs* ayant une certaine expérience avec le Terminal et Unix au cas où il surviendrait un problème (mais normalement rien de grave ne devrait pouvoir se passer).

Pour l'instant, il n'y a aucun traitement d'erreurs. Pour que vous soyez rassuré, sachez que le programme se contente de changer le lien symbolique _/System/Library/Frameworks/JavaVM.framework/Version/CurrentJDK_ vers la version de votre choix.

Le logiciel est en pièce jointe de ce fichier. Pour qu'il fonctionne il faut Mac OS 10.3 minimum (requis par certains composants Cocoa que j'utilise) et je pense que 10.4 est mieux.
Je serais intéressé à avoir le feedback de personne sur 10.3 et 10.4 sur PowerPC. Le logiciel est Universal Binaries complétement.

Accessoirement je cherche à avoir un icône un peu plus jolie. Si vous avez des talents d'artistes et êtes prêts à m'aider, n'hésitez pas à me suggérer une icône plus jolie 

Merci pour votre aide,

Laurent


[ la dernière version se trouve ici ]


----------



## mpergand (3 Mars 2006)

Superbe initiative  

Sous Panther ça coince:


> Mac OS X Version 10.3.3 (assemblage 7F44)
> 2006-03-03 09:12:45 +0100
> 2006-03-03 12:49:07.173 System Preferences[412] *** -[NSBundle load]: Error loading code /Users/mpergand/Library/PreferencePanes/JavaSelector.prefPane/Contents/MacOS/JavaSelector for bundle /Users/mpergand/Library/PreferencePanes/JavaSelector.prefPane, error code 0 (link edit error code 0, error number 2 (dyld: /Applications/System Preferences.app/Contents/MacOS/System Preferences can't open library: /usr/lib/libgcc_s.1.dylib  (No such file or directory, errno = 2)
> 
> ...



Je pense qu'il faut que tu compiles avec le sdk 10.3.

Autre solution que j'utilise pour faire les lib jni, c'est de compiler en GCC 3.3 (pas en 4), pour modifier cette option, il faut faire un clic-droit sur le Target du projet et sélectionner get Info et cliquer sur l'onglet Rules.


----------



## molgow (3 Mars 2006)

Merci ! Je n'avais pas pensé à ça. En fait, avec les Universal Binaries, je ne suis pas certain de pouvoir faire fonctionner aussi pour 10.3. Et sachant que Java 1.5 est seulement installable à partir de 10.4, je suis pas convaincu que ça ait un grand intérêt de passer du temps à apporter la compatibilité pour 10.3 (sauf si on me prouve que des gens sont intéressés pour changer le JDK de 1.4 à 1.3 sous Panther ? ) J'étais surtout intéressé à savoir si ça fonctionnerait aussi, mais dans le cas contraire, tant pis.


----------



## GrandGibus (3 Mars 2006)

Hello, 

Excellente initiative  ! 

J'ai pu installer, je suis sous Tiger ppc. 

Un détail néanmoins me gène un peu: les liens symboliques sont listés dans la combo... cela complique un peu les choix :rateau:.

Voici (à titre d'exemple) le contenu de mon _/System/Library/Frameworks/JavaVM.framework/Versions_:


> drwxr-xr-x   12 root  wheel  408 Jan 26 22:16 .
> drwxr-xr-x   10 root  wheel  340 Dec  8 22:01 ..
> lrwxr-xr-x    1 root  wheel    5 Dec  8 22:01 1.3 -> 1.3.1
> drwxr-xr-x    8 root  wheel  272 May 14  2005 1.3.1
> ...




gg


----------



## molgow (3 Mars 2006)

Merci pour le feedback.

En effet, il faut que je fasse en sorte de sélectionner uniquement les dossiers et non les liens, de telle manière que le menu propose "1.3.1", "1.4.2" et "1.5.0". 
J'ai de la peine à retrouver ce que je veux avec Cocoa, du coup j'ai pas encore trouvé la classe et la méthode qui me donnera les infos que je souhaite sur un fichier


----------



## mpergand (3 Mars 2006)

> J'ai de la peine à retrouver ce que je veux avec Cocoa, du coup j'ai pas encore trouvé la classe et la méthode qui me donnera les infos que je souhaite sur un fichier


fileAttributesAtPath

isDirectory


----------



## molgow (4 Mars 2006)

J'ai ajouté un traitement basique de certaines erreurs, supprimé les liens symboliques comme suggéré par GrandGibus et j'ai fait le packaging (je me suis un peu amusé ) :
Télécharger Java Selector 1.0.

Je publierais sur mon site web perso une page avec de la doc et tout ce qu'il faut, mais je dois pour l'instant refaire mon site web.


----------



## GrandGibus (5 Mars 2006)

excellent  !

Est-ce que tu livres les sources avec ? (ou un package séparé)
A noter qu'il y a un lien _Préférence Panes_ avec le dmg...

En passant, comment as-tu fait pour le dmg ?.... pour CCAM+, j'automatise l'opération avec un shell et du ant .


Par contre, ça saoule, qu'est-ce qu'il faut faire pour pouvoir distribuer les coups de boules à qui on veut et en quantité illimitée :hein: ?


----------



## molgow (5 Mars 2006)

GrandGibus a dit:
			
		

> Est-ce que tu livres les sources avec ? (ou un package séparé)


Oui je distribue les sources vu que j'ai mis une license GPL. Je peux te les envoyer par e-mail si tu le désires. Envoie moi juste un message privé. Dans un premier temps, je ne mettrais par contre pas les sources à disposition sur le web (la license GPL me le permet )



			
				GrandGibus a dit:
			
		

> A noter qu'il y a un lien _Préférence Panes_ avec le dmg...
> En passant, comment as-tu fait pour le dmg ?.... pour CCAM+, j'automatise l'opération avec un shell et du ant .


Euh oui, il y a un lien pour le dossier /Library/PreferencePanes, c'est juste (c'est marqué que c'est pour la désinstallation). C'est ça que tu voulais dire ?
Tu vois bien l'image de fond quand tu ouvres le .dmg ?
Tu m'intéresses bien avec ton script pour déployer le dmg, car c'est vraiment lourd et ennuyeux à faire ! J'ai regardé un peu comment ils faisaient pour Adium : ils utilisent aussi des scripts, mais c'était trop complexe à adapter (c'était un mélange de script shell, d'AppleScript et même peut-être de C d'après comme j'ai vu).


----------



## greensource (16 Mars 2006)

Bonsoir l'ami, merci de cette petit app qui me semble bien pratique! Pratique oui car je ne sais pourquoi mais mon utilitaires _Java Preferences_ plantes des que je veut changer de versions de java (passer de la 1.4.2 à 1.5). Malheureusement, même si ton app m'indique bien que j'ai effectuer le changement, lorsque je vérifie à l'aide du terminal _(java -version)_ il m'indique désespérément JVM 1.4.2!
Je ne sais plus que faire... Quelqu'un à t'il déja eu ce prob? merci à vous


----------



## GrandGibus (17 Mars 2006)

Salut et bienvenue sur MacGé ,


tout semble indiquer que quelque chose d'externe "court-circuite" la mécanique de base... 

Peux-tu nous envoyer ton .profile ? Peut-être y aurait-il une quelconque variable d'environnement mal positionnée (PATH...) ?

A défaut, tu peux également lister le contenu du répertoire Java en faisant un _ls -al /System/Library/Frameworks/JavaVM.framework/Versions/_...


----------



## greensource (17 Mars 2006)

Merci GrandGibbus, des potes a moi mon pas mal parlez de la bonne ambiances de votre forum donc je vais essayer de mi mettre aussi 
Je préviens tout de suite je suis pas très doué donc je n'ai pas bien compris avec le .profile? Je ne sais même pas ou le trouvé ;-)
J'ai listé les versions de java voici ce que j'ai trouvé:
_Versions: -->
_1.3
1.3.1
1.4
1.4.2
1.5
1.5.0
A
Current
Current JDK​Voilà, j'ai un peut peur de modifié le dossier Current JDK même si je suppose que ça arrangerais les choses. Merci encore.
ps: Comment ajoute t-on une image de mon ordi sur les messages? par exemple une image d'écran.
+++


----------



## molgow (17 Mars 2006)

Bon ton dossier Java semble être bon.
Quelle est la version de ton système ?
Tu indiques bien le mot de passe root lorsqu'on te demande un mot de passe ?
En tout cas, merci pour le feedback, même si comme ça, je vois pas trop d'où vient le problème...
Je vais essayer d'y réfléchir, même si là tout de suite c'est St-Patrick :love:


----------



## GrandGibus (17 Mars 2006)

Et que donne un _echo $PATH_ ?


----------



## greensource (20 Mars 2006)

GrandGibus a dit:
			
		

> Et que donne un _echo $PATH_ ?


ça donne ceci: 
_Last login: Sun Mar 19 22:51:39 on console
Welcome to Darwin!
245:~ pierreduchene$ echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin
245:~ pierreduchene$ _

ça veut dite quoi sans indiscrétion?
Autrement la version de mon systeme est là 10.4.5 tout est régulièrement mis à jour.

[Edit]: Je vient de faire ce que j'aurrais dû faire dès le début: fouiné dans le forum, du coup j'ai réussi a modifié ma version de java utilisé par le systeme pour compilé par contre toujours impossible de changer de version via l'application du coup mes application java qui on besoin de la version 1.5 ne marche toujours pas! m'enfin j'ai déja un eptite victoire, merci les gars


----------



## GrandGibus (20 Mars 2006)

Le PATH contient une liste de répertoire dans lesquels le système d'exploitation va chercher les exécutables. 

Quand tu lances une commande sans en donner le chemin absolu, l'OS va chercher dans les répertoires du PATH... 

A titre d'exemple, les propriétés de mon système:


> gibus:~ fred$ echo $JAVA_HOME
> /Library/Java/Home





> gibus:~ fred$ echo $PATH
> ... plein de choses:*/Library/Java/Home/bin*: plein d'autres choses...



et comme _/Library/Java/Home_ est un lien symbolique qui se balade au gré des versions de Java (1.4, 1.5...), tout est transparent, et quand je fais _java -version_, c'est la commande java de /Library/Java/Home/bin... autrement dit, le bin du répertoire pointé par le lien symbolique !

(je sais pas si j'ai été très clair :sleep


----------



## greensource (21 Mars 2006)

Si si sa va, je m'était déja un peut renseigner sur des sites anglais et c'est bien ce que j'avais compris. Merci


----------



## molgow (21 Mars 2006)

À part ça, avec les infos que j'ai, je ne vois toujours pas pourquoi ça ne fonctionnait pas


----------



## peio72 (6 Avril 2006)

Bonjour,

Bravo pour cette application qui semble fonctionner très bien.

Malheureusement depuis que je l'ai installée je n'arrive plus à lancer des JAR excétubales avec Jar Launcher.

J'ai essayé de désinstaller mais le problème persiste.

Merci de venir à mon secours et m'indiquer comment je pourrais à nouveau utiliser Jar launcher.

Merci.


----------



## molgow (6 Avril 2006)

Bonjour,

Pourrais-tu me donner le résultat de la commande "ls -l /System/Library/Frameworks/JavaVM.framework/Versions/" (sans les guillemets) dans un terminal ?


----------



## peio72 (6 Avril 2006)

Voici:

total 40
lrwxr-xr-x   1 root  wheel    5 Nov 20 22:55 1.3 -> 1.3.1
drwxr-xr-x   8 root  wheel  272 Apr 29  2005 1.3.1
lrwxr-xr-x   1 root  wheel    5 Sep 14  2005 1.4 -> 1.4.2
drwxr-xr-x   8 root  wheel  272 Jan 26  2005 1.4.2
lrwxr-xr-x   1 root  wheel    5 Nov 20 22:55 1.5 -> 1.5.0
drwxr-xr-x   8 root  wheel  272 Nov 20 22:55 1.5.0
drwxr-xr-x   6 root  wheel  204 Apr  5 00:41 A
lrwxr-xr-x   1 root  wheel    1 Nov 20 22:55 Current -> A
lrwxr-xr-x   1 root  wheel   58 Apr  6 20:12 CurrentJDK -> /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2

Merci pour votre aide.


----------



## molgow (6 Avril 2006)

ça semble correct. 
franchement j'ai de la peine à croire que c'est mon petit logiciel qui est à l'origine du problème. êtes-vous sûr que ce n'est pas une application particulière qui pose problème ou que le problème n'était pas déjà présent avant ?


----------



## peio72 (6 Avril 2006)

Non car c'est justement pour cela que je l'ai installé. Je voulais faire tourner un JAR qui nécessite la version 1.3 et Jar Launcher fonctionnait encore hier soir.

C'est uniquement depuis l'install de java selector que le problème est apparu.

Comment pourrais-je faire pour tout remettre comme avant ?

Help.


----------



## molgow (6 Avril 2006)

Ben à voir ta config est déjà comme avant.

La SEULE chose que modifie le logiciel est le lien symbolique "CurrentJDK", vu qu'il correspond sémantiquement à la configuration d'origine, je ne vois pas quoi faire de plus


----------



## peio72 (6 Avril 2006)

Je ne sais pas non plus. Du coup je me retrouve avec mon Jar Launcher qui fonctionne plus ...

Avis aux amateurs.

P.


----------



## peio72 (6 Avril 2006)

Comment remettre ce paramètre modifié à sa valeur initiale ? Merci.


----------



## GrandGibus (6 Avril 2006)

Peut-être une réponse ICI...

Mais comme Moglow, j'ai du mal à voir quelle pourrait être la cause de ta mésavanture .


----------



## peio72 (7 Avril 2006)

Bon j'ai une application Java qui marche plus non plus: jbidwatcher

J'ai une erreur: 

Uncaught exception in main method:

java.lang.NoClassDefFoundError: javax/swing/

SpringLayout


Cette appli marchait avant que j'installe java selector...

Help je voudrais retrouver mes paramètres Java d'origine ...

Merci.


----------



## peio72 (18 Avril 2006)

Y a t'il encore une vie sur ce topic ? Quelqu'un pour me venir en aide et m'indiquer comment réinstaller proprement et fonctionnellement mon Java sur Mac OS 10.4.6 après les dégâts engendrés par l'application Java Selector ?

Par avance un grand merci.

P.


----------



## GrandGibus (18 Avril 2006)

L'erreur que tu remontes (NoClassDefFond), indique que les _libs Java standards_ ne sont pas trouvées. 

Java, les trouve grâce à ce que l'on appelle le JAVA_HOME. C'est une variable d'environnement qui pointe sur le répertoire du JDK courant. 

Peux-tu nous dire quelle est sa valeur ? Pour ce, utilise le Terminal et lance les commandes:

```
gibus:~/Desktop/comp-portal fred$ [B]echo $JAVA_HOME[/B]
/Library/Java/Home
gibus:~/Desktop/comp-portal fred$ [B]ls -alG $JAVA_HOME[/B]
lrwxr-xr-x   1 root  admin  48 Sep 21  2005 /Library/Java/Home -> /System/Library/Frameworks/JavaVM.framework/Home
gibus:~/Desktop/comp-portal fred$
```


----------



## peio72 (18 Avril 2006)

Merci GrandGibus pour ton aide sur mon Java tout décousu et si ça continue ...

Voilà ce que j'obtiens en passant les commandes indiquées:

Last login: Tue Apr 18 21:02:53 on console
Welcome to Darwin!
Ordinateur-de-Pierre-HAEGELI:~ peio$ echo $JAVA_HOME

Ordinateur-de-Pierre-HAEGELI:~ peio$ ls -alG $JAVA_HOME
total 224
drwxr-xr-x   35 peio  peio    1190 Apr 12 11:51 .
drwxrwxr-t    8 root  admin    272 Oct  1  2005 ..
-rw-r--r--    1 peio  peio       4 Mar 12  2005 .CFUserTextEncoding
-rw-r--r--    1 peio  peio   12292 Apr  7 21:36 .DS_Store
drwxr-xr-x    3 peio  peio     102 Apr 26  2005 .GalleryRemote
drwx------    2 peio  peio      68 Apr 18 21:04 .Trash
-rw-------    1 peio  peio    4811 Apr  6 23:29 .bash_history
-rw-r--r--    1 peio  peio     388 Nov  1 23:49 .basilisk_ii_prefs
drwxr-xr-x    4 peio  peio     136 Jan 24 00:10 .dd-poker2
drwxr-xr-x    6 peio  peio     204 Jan 22 23:23 .dvdcss
-rw-r--r--    1 peio  peio      28 Mar 11 22:34 .eno
drwxr-xr-x   32 peio  peio    1088 Apr  5 19:39 .jbidwatcher
drwxr-xr-x    3 peio  peio     102 May  3  2005 .jmf
-rw-r--r--    1 peio  peio      25 Apr 30  2005 .lpoptions
-rw-r--r--    1 peio  peio      44 Mar  6 23:57 .mfr_temp
drwxr-xr-x    3 peio  peio     102 Dec  7 21:56 .mldonkey
drwxr-xr-x    5 peio  peio     170 Oct 31 12:03 .mplayer
drwxr-xr-x   13 peio  peio     442 Mar 13  2005 .privateer100
drwxr-xr-x   13 peio  peio     442 Sep 12  2005 .privgold100
-rw-r--r--    1 peio  peio     181 Mar 12  2005 .profile
drwxr-xr-x    8 peio  peio     272 Feb  5 23:08 .smartcvs
drwxr-xr-x   34 root  staff   1156 Dec  6 19:58 .spumux
-rwxrwxrwx    1 peio  peio      15 Mar 26 13:10 .uhqmiverc
lrwxr-xr-x    1 peio  peio      51 Jan 30 21:40 .xchat2 -> /Users/peio/Library/Application Support/X-Chat Aqua
drwxr-xr-x    3 peio  peio     102 Dec 27 01:07 Applications
drwx------    9 peio  peio     306 Apr 14 12:19 Desktop
drwx------   15 peio  peio     510 Mar 16 19:09 Documents
-rw-r--r--    1 peio  peio       0 Mar 13  2005 Icon?
drwx------   53 peio  peio    1802 Apr 10 20:22 Library
drwxr-xr-x   18 peio  peio     612 Apr  7 00:01 Movies
drwxr-xr-x   21 peio  peio     714 Mar 13 21:30 Music
drwx------   16 peio  peio     544 Apr  3 21:33 Pictures
drwxr-xr-x    7 peio  peio     238 Oct  1  2005 Public
drwxr-xr-x   11 peio  peio     374 Mar  9 21:46 Sites
drwxr-xr-x   13 peio  peio     442 Dec 28 19:41 dexia
Ordinateur-de-Pierre-HAEGELI:~ peio$ 

Voilà si ça peut te donner une idée de ce qu'il m'arrive.

Encore un grand merci pour toute aide pour le rétablissement de mon Java.

P.


----------



## GrandGibus (18 Avril 2006)

Dans ce cas, fixer JAVA_HOME peut aider certains programmes... Pour ce, il faut éditer le fichier .profile (qui se trouve par défaut dans ton home, il est listé dans ton précédent message). Attention, aux éditeurs de fichiers à la TextEdit qui ne peuvent s'empêcher de rajouter des extensions aux fichiers. Si tu n'as pas d'éditeur de fichier digne de ce nom, jette un coup d'oeil à Smultron. 

Rajoute donc la ligne dans le .profile, 

```
export JAVA_HOME=/Library/Java/Home
```
sauve le fichier et ferme l'éditeur. 

A l'invite de commande, fais:

```
source .profile
```
pour que les modifications soient prises en compte. 

Maintenant, refais les instructions données dans mon précédent post...


----------



## peio72 (20 Avril 2006)

Merci. Je viens de faire la mise à jour Java proposée par Apple: J2SE 5.0 et tous mes problèmes sont résolus. Les applications fonctionnent à nouveau et JarLauncher également. Ouf. Merci Apple.

Je n'ai pas retesté Java Selector depuis car une mésaventure me suffit.

Merci pour votre aide et bon courage dans vos futurs développements.


----------



## molgow (20 Avril 2006)

Pareil, la mise à jour Java a réglé le problème chez moi aussi.
Mais je ne comprends toujours pas d'où venait le problème. Je me répète, mais je ne vois pas qu'est-ce que Java Selector aurait pu toucher pour provoquer ça !


----------

