# Problème Java MacOS X



## pseudoxe (4 Mai 2009)

Bonjour à tous, 

après quelques heures de recherches infructueuses, je viens vous demander de l'aide. :hein:

En effet, j'ai quelques soucis avec ma JVM sur ma machine. Lorsque je tente d'afficher une page web (sous Safari) contenant du java, j'ai le message d'erreur suivant : 

"Impossible de lancer l'application car elle requiert une version de Java non installée. Cette application requiert Java 1.5.0, mais seules les versions suivantes sont installées : . La mise à jour avec une version plus récente de Mac OS X peut résoudre ce genre de problème."

Les options dans les préférences de Safari sont bien cochées. 

De plus, j'obtiens le même message (en anglais) lorsque je tente de lancer Eclipse ou toute autre application utilisant Java (comme Utilitaire/Java/J2SE 5.0/Java Preferences.app...). 

Voici le résultat de ces commandes dans un terminal : 
which java --> 
/usr/bin/java

java -version -->
java version 1.5.0_16
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-275)
Java HotSpot(TM) Client VM (build 1.5.0_16-132, mixed mode, sharing)

Enfin, et ce qui me paraît le plus bizarre, c'est lorsque j'ai tenté de changer de version manuellement pour la version 1.4.2 (ln -s 1.4.2 CurrentJDK dans /System/Library/Frameworks/JavaVM.framework/Version), le message d'erreur cité au dessus devient : 

"Impossible de lancer l'application car elle requiert une version de Java non installée. Cette application requiert Java *1.4.2*, mais seules les versions suivantes sont installées : . La mise à jour avec une version plus récente de Mac OS X peut résoudre ce genre de problème."

Enfin, dans le terminal, les commande javac et java fonctionnent très bien! :mouais:

Je vous avouerai que je ne sais plus quoi faire. Une (bonne) idée serait la bienvenue pour résoudre ce problème!


----------



## grumff (4 Mai 2009)

T'as la dernière version d'Eclipse ? J'ai eu une couille une fois où j'avais installé une bêta de java 5 il y a longtemps, où à l'installe Eclipse se créait un lien direct vers la jvm, que j'avais été obligé de recréer pour qu'il pointe sur la bonne, tous les changements de JAVA_HOME ou de liens symboliques dans les lib du système n'y changeaient rien. En réinstallant Eclipse ça change rien ?


----------



## pseudoxe (4 Mai 2009)

Oui, j'ai la dernière version. 

J'ai déjà tenter la réinstallation de Eclipse et ça change rien...

A voir peut-être avec une réinstallation de java mais je ne sais pas trop comment faire ça!!


----------



## grumff (4 Mai 2009)

bah, si ta jvm fonctionne dans le shell, je pense pas qu'il y ait de problèmes au niveau de l'install, au pire dans les alias mac os x, ou un java_home setté quelque part, je suis pas sûr d'avoir cerné toutes les finesses dans la façon dont os x l'utilise. Si tu lances Eclipse depuis le shelle, ça marche ?
Tous les liens symboliques dans 
/System/Library/Frameworks/JavaVM.framework et /System/Library/Frameworks/JavaVM.framework/Versions pointent bien sur la bonne ? Tu les as tous vérifiés ? T'as tenté une réparation des droits sur le disque ? (il parait que parfois ça résous des choses, bon pour moi ça reste assez légendaire  les solutions sans avoir compris d'abord le problème, ça m'a toujours laissé des doutes, je laisse ça aux hotlines de nos F.A.I préférés )


----------



## pseudoxe (4 Mai 2009)

Eclipse depuis le shell : négatif, même problème!!
Voilà l'erreur que j'obtiens en lançant du shell :

[JavaAppLauncher Error] No matching Java VM for (1.5.0) from 'JVMVersion' key in 'Java' sub-dictionary of Info.plist
JavaVM FATAL: Failed to load the jvm library.

Pour ce qui est des liens symboliques, tous vérifiés, il me paraissent bons.
Réparation des droits sur le disque : c'est fait aussi, rien n'y change. 
Pour info, peux-tu me dire ce que tu y trouve dans variable JAVA_HOME, à titre de comparaison... on sait jamais!! 

En tout cas merci quand même de te pencher sur mon problème 

---------- Nouveau message ajouté à 22h44 ---------- Le message précédent a été envoyé à 21h30 ----------

Nouvelle découverte : 

lorsque je lance eclipse avec la ligne de commande suivante : 

./eclipse -vm $JAVA_HOME 

... ça marche!!

Je comprends vraiment pas ou est le problème alors... d'après ce que je comprends, ce n'est pas dans le lancement de l'appli car ça me le fait avec d'autres (applet dans Safari par exemple), ça ne vient pas de la définition de mon JAVA_HOME, ça ne vient pas de mon install java... bref!! Je ne vois vraiment plus où chercher...:mouais:

PLEASE, HELP!!


----------



## grumff (5 Mai 2009)

Va voir là :
/Application/Eclipse.app/Contents/Info.plist
Puisqu'il te dit qu'il y a une JVM qu'il ne trouve pas. Il doit avoir un mauvais paramètre dans ce fichier, comme il te le dit, et se baser sur son fichier de conf avant tout, ce qui explique que même depuis le shell si tu lui précises pas la jvm il prend pas le java_home par défaut.

---------- Nouveau message ajouté à 00h21 ---------- Le message précédent a été envoyé à 00h19 ----------

Pour info, le Info.plist chez moi :

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">

<dict>
	<key>CFBundleExecutable</key>
		<string>eclipse</string>
	<key>CFBundleGetInfoString</key>
		<string>Eclipse 3.3 for Mac OS X, Copyright IBM Corp. and others 2002, 2007. All rights reserved.</string>
	<key>CFBundleIconFile</key>
		<string>Eclipse.icns</string>
	<key>CFBundleIdentifier</key>
		<string>org.eclipse.eclipse</string>
	<key>CFBundleInfoDictionaryVersion</key>
		<string>6.0</string>
	<key>CFBundleName</key>
		<string>Eclipse</string>
	<key>CFBundlePackageType</key>
		<string>APPL</string>
	<key>CFBundleShortVersionString</key>
		<string>3.3</string>
	<key>CFBundleSignature</key>
		<string>????</string>
	<key>CFBundleVersion</key>
		<string>3.3</string>
		
	<key>Eclipse</key>
		<array>
			<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options:
				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java</string>
				<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
			-->
			<string>-keyring</string><string>~/.eclipse_keyring</string>
			<string>-consoleLog</string>
			<string>-showlocation</string>
			<!-- WARNING:
				If you try to add a single VM argument (-vmargs) here,
				*all* vmargs specified in eclipse.ini will be ignored.
				We recommend to add all arguments in eclipse.ini
			 -->
		</array>
</dict>

</plist>
```

(ah et sinon, mon JAVA_HOME est pas renseigné, pas lancé grand chose depuis le shell récemment, donc j'ai pas configuré ça, mais manifestement le tiens est bon)


----------



## pseudoxe (5 Mai 2009)

J'ai été voir, fichier identique au tien mise à part la version (3.4 pour moi) ce qui, a priori après vérification, ne devrait pas poser de problème (cette version peut être lancée avec les jdk 5 et 6).  

Par contre la solution que tu me donnes ne pourrait marcher que pour Eclipse, je rapelle au passage que tout ce qui fonctionne avec java en mode graphique ne marche pas... (java, javac etc marchent très bien dans mon terminal). Même si je te l'accorde, ça serait déjà une belle victoire d'arriver à faire marcher Eclipse 

J'ai donc essayé aussi dans Info.plist de décommenter cette ligne : 

<string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>

Enregistrer, relancer Eclipse, même combat!! Y-a-t'il quelque chose de particulier à faire pour prendre en compte le nouveau Info.plist?? Ou mon cas est-il vraiment désespéré?!!! 

Pour en revenir au problème principal, y a pas un fichier perdu quelquepart dans les entrailles de mon tigre qui est consulté au démarrage, ou au lancement d'une application qui dit si oui ou non j'ai une jvm installée et qui alors me jouerait des tours??


----------



## grumff (5 Mai 2009)

pseudoxe a dit:


> Pour en revenir au problème principal, y a pas un fichier perdu quelquepart dans les entrailles de mon tigre qui est consulté au démarrage, ou au lancement d'une application qui dit si oui ou non j'ai une jvm installée et qui alors me jouerait des tours??


Bah, ça me parait bizarre, il me semblait que les applications utilisaient les liens symboliques dans /System/Library/Frameworks/JavaVM.framework/ et que les applications en ligne de commande utilisaient surtout le JAVA_HOME. Tes liens symboliques sont bien des vrais liens symboliques reconnus comme tels en ligne de commande ? Pas des Alias façon mac os traditionnel ? Et donc sur la JDK 1.5 ? Le lien de la 1.5 renvoie bien sur la 1.5.0 ?

Je me suis souvent demandé s'il y avait pas effectivement un autre paramètre qui entre en jeu, parce que j'ai aussi eu des soucis une fois où j'avais installé une jre issue du site développeur avant qu'elle soit dans les mises à jour de logiciel, j'ai fais les mêmes constats que toi et j'ai vite jeté l'éponge parce que pour le peu d'appli en java que j'utilise, outre Eclipse, je pouvais tout à fait avoir recours à la ligne de commande.


```
grumff:JavaVM.framework flo$ ls -l
total 72
lrwxr-xr-x   1 root  wheel   27 24 sep  2008 Classes -> Versions/CurrentJDK/Classes
lrwxr-xr-x   1 root  wheel   94 24 sep  2008 CodeResources -> ../../../../../../../../../System/Library/Frameworks/JavaVM.framework/Versions/A/CodeResources
lrwxr-xr-x   1 root  wheel   28 24 sep  2008 Commands -> Versions/CurrentJDK/Commands
lrwxr-xr-x   1 root  wheel   27 24 sep  2008 Frameworks -> Versions/Current/Frameworks
lrwxr-xr-x   1 root  wheel   24 24 sep  2008 Headers -> Versions/Current/Headers
lrwxr-xr-x   1 root  wheel   24 24 sep  2008 Home -> Versions/CurrentJDK/Home
lrwxr-xr-x   1 root  wheel   23 24 sep  2008 JavaVM -> Versions/Current/JavaVM
lrwxr-xr-x   1 root  wheel   29 24 sep  2008 Libraries -> Versions/CurrentJDK/Libraries
lrwxr-xr-x   1 root  wheel   26 24 sep  2008 Resources -> Versions/Current/Resources
drwxr-xr-x  14 root  wheel  476 24 sep  2008 Versions
grumff:JavaVM.framework flo$ ls -l Versions
total 56
lrwxr-xr-x  1 root  wheel    5 24 sep  2008 1.3 -> 1.3.1
drwxr-xr-x  3 root  wheel  102 29 sep  2007 1.3.1
lrwxr-xr-x  1 root  wheel    5 24 sep  2008 1.4 -> 1.4.2
lrwxr-xr-x  1 root  wheel    3  1 mai  2008 1.4.1 -> 1.4
drwxr-xr-x  8 root  wheel  272 25 mai  2007 1.4.2
lrwxr-xr-x  1 root  wheel    5 24 sep  2008 1.5 -> 1.5.0
drwxr-xr-x  8 root  wheel  272 25 mai  2007 1.5.0
lrwxr-xr-x  1 root  wheel    5 24 sep  2008 1.6 -> 1.6.0
drwxr-xr-x  8 root  wheel  272  1 mai  2008 1.6.0
drwxr-xr-x  8 root  wheel  272 24 sep  2008 A
lrwxr-xr-x  1 root  wheel    1 24 sep  2008 Current -> A
lrwxr-xr-x  1 root  wheel    3 24 sep  2008 CurrentJDK -> 1.5
```


----------



## pseudoxe (5 Mai 2009)

J'ai fouillé un peu dans ton sens, ça me parait être un sacré bordel la dedans quand même (en supposant que ton install soit parfaitement clean ) : 

```
JavaVM.framework >>> ls -l
total 56
lrwxr-xr-x    1 root  wheel   27 Nov 19 23:07 Classes -> Versions/CurrentJDK/Classes
lrwxr-xr-x    1 root  wheel   28 Nov 19 23:07 Commands -> Versions/CurrentJDK/Commands
lrwxr-xr-x    1 root  wheel   24 Nov 19 23:07 Headers -> Versions/Current/Headers
lrwxr-xr-x    1 root  wheel   24 Nov 19 23:07 Home -> Versions/CurrentJDK/Home
lrwxr-xr-x    1 root  wheel   23 Nov 19 23:07 JavaVM -> Versions/Current/JavaVM
lrwxr-xr-x    1 root  wheel   29 Nov 19 23:07 Libraries -> Versions/CurrentJDK/Libraries
lrwxr-xr-x    1 root  wheel   26 Nov 19 23:07 Resources -> Versions/Current/Resources
drwxr-xr-x   10 root  wheel  340 May  4 15:19 Versions
```
Autrement dit dans cette partie, il me manque le lien vers CodeResources (qui n'existe d'ailleurs pas dans Versions/A :mouais et le lien vers Frameworks (qui n'existe pas non plus dans Versions/Current :mouais::mouais!! 

Ensuite :

```
JavaVM.framework >>> ls -l Versions
total 32
lrwxr-xr-x   1 root  wheel    5 Nov 19 23:07 1.3 -> 1.3.1
drwxr-xr-x   8 root  wheel  272 Apr  8  2008 1.3.1
lrwxr-xr-x   1 root  wheel    5 Nov 19 23:07 1.4 -> 1.4.2
drwxr-xr-x   8 root  wheel  272 Apr  8  2008 1.4.2
drwxr-xr-x   8 root  wheel  272 Apr  8  2008 1.5.0
drwxr-xr-x   6 root  wheel  204 May  5 01:30 A
lrwxr-xr-x   1 root  wheel    1 Nov 19 23:07 Current -> A
lrwxr-xr-x   1 root  wheel    5 May  4 15:19 CurrentJDK -> 1.5.0
```
Soit une fois de plus, un dossier 1.5 inexistant (bien que le CurrentJDK pointe directement sur 1.5.0, la passerelle par 1.5 est-elle vraiment nécessaire??!!!). Pas de 1.4.1 pour moi et pas de 1.6 mais ça à la limite... je pense pas que ça soit nécessaire non plus, la version 1.5 me suffirait amplement (pourvu qu'elle fonctionne correctement un jour... je désespère (presque) pas ). 

Donc pour résumer (et pour être sur que le problème ne vient pas de là), il me faudrait récupérer les dossiers CodeResources, Frameworks, les replacer au bon endroit dans cette hierarchie, et créer les liens symbolique dans JavaVM.framework (et pour être vraiment rigoureux, créer un lien passerelle entre CurrentJDK et 1.5.0, sauf si tu me confirmes bien que c'est totallement inutile...). Si j'ai bien compris... 

Sais-tu ou je peux récupérer ces dossiers? Je n'ai pas d'autres Mac sous la main... Sinon pourrais-tu me les faire parvenir??

En tout cas... ENCORE MERCI!!


----------



## grumff (5 Mai 2009)

Le dossier CodeResources y'a des chances que ce soit installé avec xcode, tu dois pouvoir t'en passer. Le lien symbolique en 1.5 par contre, il pourrait bien être en cause. Une appli qui nécessite du 1.5 irait certainement taper là dedans, ou du moins essayer, ça pourrait être la cause de tes problèmes.


----------



## pseudoxe (5 Mai 2009)

Ce lien est réparé. J'ai bien maintenant : 

1.5 -> 1.5.0
CurrentJDK -> 1.5

Mais rien n'y fait...


----------



## grumff (5 Mai 2009)

T'as rebooté l'ordi depuis ? On sait jamais&#8230; 

---------- Nouveau message ajouté à 19h49 ---------- Le message précédent a été envoyé à 19h11 ----------

BOn en fait, après avoir cherché 5 minutes, je suis tombé sur un utilitaire qu'on a tous sur notre mac et qui s'appelle "préférences java"&#8230; En bon geek qu'on est, il fallait peut-être commencer par jeter un oeil ici avant d'aller trafiquer les fichiers à la main&#8230;


----------



## pseudoxe (6 Mai 2009)

Après reboot de l'ordi, non, non rien a changéééé, tout, tout a continuéééé yeahhh yeahhhhhh :rateau:

:modo: je crois que ça y est, je craque!!!



> En bon geek qu'on est...


Parle pour toi  
Parceque figure toi que ce petit utilitaire, ben c'est du java... et tout comme pour Eclipse, je peux pas le lancé (pour les même raison). La boucle est bouclée!

Le lancer en ligne de commande?!! A creuser! 
Sinon je suis toujours ouvert à d'autres idées...


----------



## grumff (6 Mai 2009)

Pour le lancer en ligne de commande :
/Applications/Utilities/Java/Java\ Preferences.app/Contents/MacOS/Java\ Preferences 
Rien de bien compliqué.  Mais ça me rappelle le coup du driver de modem à télécharger sur internet&#8230;


----------



## pseudoxe (7 Mai 2009)

Je me suis mal exprimé, désolé. 
Pour le lancer comme ça je suis d'accord. 
Mais ça ne change pas le problème, il ne trouve pas java. 

Ce que je voulais dire en disant "le lancer en ligne de commande", c'est faire comme pour Eclipse, lorsque je le lance en ligne de commande, quand je peux lui spécifier ma JVM avec l'option -vm et que ça marche! 
Malheureusement, je ne vois pas d'option équivalente avec ce Préférence java.app...


----------



## grumff (7 Mai 2009)

Je viens de voir qu'il y a un lien aussi dans /Library/Java, tu peux aussi vérifier celui là, mais bref, ce panneau de pref java permet de spécifier un ordre d'utilisation des JVM pour les applications et les applets, donc ce serait bien de comprendre ce que ça modifie.


----------



## pseudoxe (9 Mai 2009)

J'ai beau essayer comme je veux, je n'arrive pas à ouvrir de panneau de préférence. 

Sinon, connaitrais-tu un moyen efficace pour supprimer totalement Java et le réinstaller? 

Parceque là, sinon, je risque de jeter l'éponge...


----------



## tatouille (9 Mai 2009)

pseudoxe a dit:


> J'ai beau essayer comme je veux, je n'arrive pas à ouvrir de panneau de préférence.
> 
> Sinon, connaitrais-tu un moyen efficace pour supprimer totalement Java et le réinstaller?
> 
> Parceque là, sinon, je risque de jeter l'éponge...



rm -Rf / 

sinon options:
- reinstall les jdks via le site d'Apple telecharge les pkgs
- ecrase ton systeme en gardant tes users puis reupdate en combo


----------



## grumff (9 Mai 2009)

tatouille a dit:


> rm -Rf /


Fais gaffe avec ce genre de blagues, y'en a toujours un pour essayer sans comprendre&#8230; Déjà que ceux qui comprennent nous font parfois de bonnes blagues&#8230;


----------



## tatouille (10 Mai 2009)

grumff a dit:


> Fais gaffe avec ce genre de blagues, y'en a toujours un pour essayer sans comprendre&#8230; Déjà que ceux qui comprennent nous font parfois de bonnes blagues&#8230;


 

 c'est vraie qu'on jamais a l'abrit d'une connerie, ca m'est arrivé il y a quelques annees dans un Makefile du genre 


```
RM = rm -Rf

rule:
  $(RM) $(target)/*
```
ou bien sur $(target) etait vide , me suis appercu rapidement quand le bignou a stoppe net sur le target qui devait prendre au bas mot 3 milisec, escape puis etendu des degats
 mais bon comme je suis un maniac du backup 

la chance est qu'il s'etait attaque a Applications ou les choses sont grosses en general ca na pas ete plus loin avant que j'escape la commande, mais bon maintenant je test systematiquement les paths != '/' et ne fais plus ce genre d'ecriture au possible $(target)/*   comme quoi ca marque ce genre d'aventure


----------



## ntx (10 Mai 2009)

tatouille a dit:


> c'est vraie qu'on jamais a l'abrit d'une connerie, ca m'est arrivé il y a quelques annees dans un Makefile du genre
> 
> 
> ```
> ...


Ah tiens, je vois que je ne suis pas le seul au monde à faire ce genre de connerie  Et le pire c'est qu'après ce genre de manoeuvre, pour réinstaller Mac OSX ...  J'ai du reformater mon disque :rateau: Depuis je travaille sur une session utilisateur, et plus admin.


----------



## grumff (10 Mai 2009)

ntx a dit:


> Ah tiens, je vois que je ne suis pas le seul au monde à faire ce genre de connerie  Et le pire c'est qu'après ce genre de manoeuvre, pour réinstaller Mac OSX ...  J'ai du reformater mon disque :rateau: Depuis je travaille sur une session utilisateur, et plus admin.


Bah, même en étant admin, tant que tu mets pas un sudo devant ça cassera pas tout. C'est justement toute la différence entre un bon Windows XP et un os x, même en étant admin on peut pas tout casser sans rentrer un mot de passe, parce que les sessions utilisateur c'est super casse couille. Bon il se trouve que dans le cas auquel je fais allusion, le sudo&#8230; 

Cela étant dit, on détourne un peu trop le sujet&#8230;


----------



## tatouille (10 Mai 2009)

grumff a dit:


> Bah, même en étant admin, tant que tu mets pas un sudo devant ça cassera pas tout. C'est justement toute la différence entre un bon Windows XP et un os x, même en étant admin on peut pas tout casser sans rentrer un mot de passe, parce que les sessions utilisateur c'est super casse couille. Bon il se trouve que dans le cas auquel je fais allusion, le sudo&#8230;
> 
> Cela étant dit, on détourne un peu trop le sujet&#8230;



mon cas etait sans sudo, mais en admin simple (comme tout le monde) pas root  , pas besoin d'etre root ,   ca te met un bon bordel quand meme, mais je crois que ce genre de conneries ca arrive a tout le monde qui bossent beaucoup c'est pas en foutant rien que tu fais des conneries 

mais bon pour le sujet une reinstall JDK s'impose avec les pkg onsite ca devrait refixer l'installation de Java


----------

