在一个Eclipse插件中,获得。与所选java文件相对应的类文件?
我正在写一个Eclipse插件。我正在寻找一种正确的方法来获取一个选定的java文件,并找到它对应的文件。类文件
我现在的做法适用于标准的EclipseJava项目,但似乎不够优雅:我将IJavaProject#getOutputLocation称为getOutputLocation,并将其与所选文件的路径结合起来。那我就换衣服。java到。上课
下面是将传入选择转换为路径的方法的代码:
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文件没有相应的。类文件(编译错误,没有自动生成,等等)。我不在乎那些;我只是想知道如果有一个类文件,它的完整路径是什么
# 1 楼答案
没有方法可以直接找到相应的类文件资源。获取相应输出文件夹的正确方法是:
IJavaElement
,很可能是ICompilationUnit
(.java文件)IPackageFragmentRoot
(源文件夹)IClasspathEntry
IClasspathEntry.getOutputLocation()
或IJavaProject.getOutputLocation()
方法查找输出位置李>ICompilationUnit
的包构造类路径的路径该类文件可能存在,也可能不存在,这取决于项目是否已生成,是否存在生成路径错误等。因此,还需要使用其他试探法来确定上述算法的结果是否可用