Я пишу плагин Eclipse. Я ищу правильный способ получить выбранный файл Java и найти соответствующий ему файл .class.
То, как я это делаю, теперь работает для стандартного Java-проекта Eclipse, но выглядит менее элегантно: я вызываю IJavaProject # getOutputLocation и объединяю это с путем к выбранному файлу. Тогда я просто изменяю .java на .class.
Вот код для метода, который переводит из входящего выбора в путь:
def selection_to_path selection
path = selection.get_paths.first
output_location = path.get_first_segment.get_output_location
root = org.eclipse.core.resources::ResourcesPlugin.getWorkspace().get_root
folder = root.get_folder output_location
folder.get_location.to_s
path_to_file_as_string = path.get_last_segment.get_path.to_s
path_to_file_as_string[/\.java$/] = ".class"
path_elements_of_java_file = path_to_file_as_string.split("/")[3..-1]
all_elements = folder.get_location.to_s.split("/") + path_elements_of_java_file
File.join(all_elements)
end
Это работает, но я подозреваю, что оно часто терпит неудачу, и это неправильно. В частности, в документации по getOutputLocation говорится, что мои предположения о расположении файлов классов слишком упрощены.
Так, как правильно это сделать?
Мне не нужно, чтобы это работало все время. Конечно, будет много случаев, когда .java-файл не имеет соответствующего .class-файла (ошибки компиляции, автоматическая сборка и т. Д.). Меня это не волнует; Я просто хочу знать, существует ли файл класса, каков его полный путь?