Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Почему slash (“/”) в начале пути к файлу где-то нужен, а где-то не нужен?

#java #path


Здравствуйте.
Есть примеры приложений на Java, там прописываются пути к картинкам так

construirDatabase.setIcon(new javax.swing.ImageIcon(getClass().getResource("/logo_pequeño.png")));


У меня нет ошибки только если "косую черту" убрать. Почему это?
    


Ответы

Ответ 1



Имя ресурса может быть абсолютным и относительным. Абсолютное имя начинается с символа /. В этом случае ресурс ищется относительно корня classpath. Т.е. берутся все пути и jar-файлы, входящие в classpath, и ресурс ищется относительно совокупности этих точек. Если же имя относительное – к нему в начало приписывается путь, полученный из пакета текущего класса, и далее поиск ведется как в случае абсолютного имени. Для примера, пусть у нас задан classpath c:\projects\someproject\classes;c:\libs\somelib.jar. Код примера находится в классе com.example.SomeClass. Поиск ресурса по абсолютному имени getClass().getResource("/images/logo.png") происходит следующим образом: К пути из classpath c:\projects\someproject\classes приписывается имя ресурса /images/logo.png, в результате чего ищется файл c:\projects\someproject\classes\images\logo.png. Если файл найден – поиск прекращается. Если нет, то в jar-файле c:\libs\somelib.jar ищется файл /images/logo.png, причем поиск ведется от корня jar-файла. Поиск ресурса по относительному имени getClass().getResource("res/data.txt") происходит следующим образом: К пути из classpath c:\projects\someproject\classes приписывается текущий пакет класса, где находится код (/com/example) и далее имя ресурса res/data.txt, в результате чего ищется файл c:\projects\someproject\classes\com\example\res\data.txt. Если файл найден – поиск прекращается. Иначе: В jar-файле c:\libs\somelib.jar ищется файл /com/example/res/data.txt, поиск ведется от корня jar-файла.

Комментариев нет:

Отправить комментарий