Мягкие и жесткие ссылки для Java - почему работают только мягкие ссылки

Я установил 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

Это решает проблему. Так почему же софт-линк работает, а жесткий - не работает?

3
задан 8 January 2018 в 13:59

1 ответ

Когда вы создаете символическую ссылку ln -s на файл, она действует как ссылка из мира Windows. Вы можете запустить эту символическую ссылку из любой папки, но рабочим каталогом будет тот, где находится исходный файл.

Что касается жестких ссылок, когда вы создаете жесткую ссылку ln, вы делаете своего рода копию исходного файла, сохраняя все его свойства (он имеет тот же индекс, что и исходный файл). Таким образом, в рабочем каталоге будет находиться жесткая ссылка. Так что в вашем случае жесткая ссылка работает нормально, но она использует /usr/bin в качестве рабочего каталога & amp; ищет другие дополнительные файлы в этой папке.

3
ответ дан 8 January 2018 в 13:59

Другие вопросы по тегам:

Похожие вопросы: