J'ai installé Oracle Java sur mon Ubuntu 16.04. J'ai essayé de faire un lien dur:
ln /usr/local/jdk-9.0.1/bin/Java /usr/bin/Java
Quand j'ai lancé Java j'ai eu cette erreur:
Java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
J'ai enlevé le lien dur et fait un lien souple à la place:
ln -s /usr/local/jdk-9.0.1/bin/Java /usr/bin/Java
Cela résout le problème. Alors, pourquoi le lien virtuel fonctionne-t-il alors que le lien dur a échoué?
Lorsque vous créez un lien symboliqueln -s
dans un fichier, il agit comme un lien depuis le monde Windows. Vous pouvez lancer ce lien symbolique à partir de n’importe quel dossier, mais le répertoire de travail sera celui dans lequel se trouve le fichier original.
En ce qui concerne les liens physiques, lorsque vous créez un lien physiqueln
, vous effectuez une sorte de copie du fichier d'origine en conservant toutes ses propriétés (il a le même inode que le fichier d'origine). Ainsi, le répertoire de travail sera celui où se trouve le lien dur. Donc, dans votre cas, le lien physique fonctionne bien, mais il utilise /usr/bin
comme répertoire de travail et recherche d'autres fichiers supplémentaires dans ce dossier.