繁体   English   中英

开发eclipse插件时,可以使用“添加Jars”获取jar文件的绝对路径吗?

[英]When developing eclipse plugin, can I get absolute path of jar files using “Add Jars”?

我正在编写一个eclipse插件。 在插件中,我编写了一个可以为我创建命令字符串的函数。 该字符串包含“ -cp jar_path”。 jar路径是通过Eclipse的“添加jar”按钮进行配置的(在项目的属性配置中,“ add jars”位于“ java build path-> library”下)。 我需要获取jar文件的绝对路径,但是使用“添加jar”只能使用以下代码获取相对路径。 我知道使用“添加外部罐子”是可以的,但是我也必须使“添加罐子”也能工作。 有什么办法吗? 另一个问题是:如果右键单击“引用的库”下添加的jar,然后单击“在->属性中显示”,则IDE可以获取该jar的绝对位置。 我认为也许IDE可以从工作区/.metadata/.plugins/com.eclipse.core.resources/.projects中获取它。 但是即使是真的,我仍然不能直接读取这些文件,因为普通读者无法解析该格式。

IPackageFragmentRoot[] roots = JavaCore.create(project).getPackageFragmentRoots();
for(IPackageFragmentRoot root : roots)
{
    IClasspathEntry entry = root.getResolvedClasspathEntry();
    if(IClasspathEntry.CPE_LIBRARY == entry.getEntryKind())
    {    
        root.getRawClasspathEntry();
        String cp = entry.getPath().toOSString();
    }
}

如果您有一个workpace相对路径,则可以使用以下方法将其转换为绝对位置:

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

IPath rootPath = root.getLocation();

IPath fullPath = rootPath.append("/project/container/file");
solved by myself, thank you, greg-449!
String cp;
if (root.isArchive() && root.isExternal())
    cp = root.getResolvedClasspathEntry().getPath().toOSString();
else if (root.isArchive() && !root.isExternal())
    cp = root.getResource().getLocation().toString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM