Я установил Oracle Java на свою Ubuntu 16.04. Я попытался создать жесткую ссылку:
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
Это решает проблему. Так почему же софт-линк работает, а жесткий - не работает?
Когда вы создаете символическую ссылку ln -s
на файл, она действует как ссылка из мира Windows. Вы можете запустить эту символическую ссылку из любой папки, но рабочим каталогом будет тот, где находится исходный файл.
Что касается жестких ссылок, когда вы создаете жесткую ссылку ln
, вы делаете своего рода копию исходного файла, сохраняя все его свойства (он имеет тот же индекс, что и исходный файл). Таким образом, в рабочем каталоге будет находиться жесткая ссылка. Так что в вашем случае жесткая ссылка работает нормально, но она использует /usr/bin
в качестве рабочего каталога & amp; ищет другие дополнительные файлы в этой папке.