Я пытаюсь найти путь к файлу jar, который находится в необработанном пути к классам. getRawClasspath возвращает коллекцию объектов IClasspathEntry. Я могу вызвать getPath на тех.
Но getPath возвращает что-то странное: IPath, который начинается с имени проекта, например:
/ ProjectName / Библиотека / something.jar
Как правильно превратить этот относительный путь в полный путь ОС? Сначала я подумал, что могу просто добавить путь к корню рабочей области, но это не работает, поскольку между рабочей областью и проектом часто существуют промежуточные каталоги.
И вообще, как мне узнать, что делать с IPath, возвращаемым методом? Кажется, я никогда не знаю, что это за IPath; относительно проекта, относительно рабочей области, относительно проекта, но с именем проекта в качестве первого элемента, относительно фазы луны ... Это все сбивает с толку, и документация никогда не помогает - или, по крайней мере, я не понимаю не знаю, где искать.
UPDATE
Теперь я еще больше сбит с толку. Проблема по-прежнему заключается в том, что когда у вас есть IClasspathEntry, мне все еще неясно, как разрешить его в пути к файловой системе.
Ответ, который говорит: «если путь начинается с / это абсолютный путь (относительно рабочего пространства), неверен. Проблема в том, что метод getPath в IClasspath возвращает одну из двух вещей: путь, начинающийся с косая черта, относящаяся к рабочей области, или IPath, начинающийся с /, который является фактическим путем к файловой системе. Да, две совершенно разные вещи объединены в один тип. Вы получаете вариант файловой системы, когда jar находится за пределами рабочей области, и вы получаете «абсолютный» вариант, когда он находится в рабочей области.
Я думаю, что часть ответа заключается в том, что IPath, само по себе, является лишь причудливой строкой. Вы должны знать, откуда это взялось, чтобы понять из этого. Он не несет нужной информации, которая может быть полезна сама по себе.
Так, как правильно с этим справиться?