Java 的软链接和硬链接 - 为什么只有软链接有效

Java 的软链接和硬链接 - 为什么只有软链接有效

我已经在 Ubuntu 16.04 上安装了 Oracle Java。我尝试建立硬链接:

ln /usr/local/jdk-9.0.1/bin/java /usr/bin/java

当我运行 java 时出现此错误:

java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

我删除了硬链接并改为创建了软链接:

ln -s /usr/local/jdk-9.0.1/bin/java /usr/bin/java

问题解决了。那么为什么软链接可以工作,而硬链接却失败了呢?

答案1

当你创建一个符号链接 ln -s对于文件,它的作用类似于 Windows 世界中的链接。您可以从任何文件夹启动此符号链接,但工作目录将是原始文件所在的目录。

对于硬链接,当你创建一个硬链接 ln你复制了原始文件并保留了它的所有属性(它与原始文件具有相同的 inode)。因此工作目录将是硬链接所在的目录。因此,在你的情况下,硬链接工作正常,但它会使用该/usr/bin文件夹作为工作目录并查找其他补充文件。

相关内容