终于找到直接可以用的了
- path = FileLocator.toFileURL(
- Platform.getBundle(IAppConstants.APPLICATION_ID)
- .getEntry("")).getPath().toString();
RCP 文件路径问题 String path =FileLocator.toFileURL(Platform.getBundle("工程名").getEntry("")).getPath 得到eclipse rcp plugin 内目录文件绝对路径的方法 import java.io.IOException; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; import org.osgi.framework.Bundle; import com.work.base.exception.DataException; import com.work.view.Activator; public class BundlePathUtil { public static String getRealPath(String bundleID, String entry) throws DataException { URL urlentry; String strEntry; try { Bundle bundle = Platform.getBundle(bundleID); if (bundle==null) throw new DataException("请检查文件的路径",new NullPointerException()); // get path URL urlentry = bundle.getEntry(entry); if (urlentry==null) throw new DataException("请检查文件的路径",new NullPointerException()); strEntry = FileLocator.toFileURL(urlentry).getPath(); } catch (IOException e1) { throw new DataException("请检查文件的路径", e1); } return strEntry; } public static String getPluginPath(){ return Activator.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath(); } } 另外,获取插件/rcp 的workspace的路径: Platform.getInstanceLocation().getURL().getPath() 从插件/RCP中取得文件路径的方法 最近社区里问这个问题的人特别多,所以在这里将自己用到的几个方法写出来。假如以后还有其他的方法,会进行更新。 从插件中获得绝对路径: AaaaPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath()); 通过文件得到Project: IProject project = ((IFile)o).getProject(); 通过文件得到全路径: String path = ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath(); 得到整个Workspace的根: IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); 从根来查找资源: IResource resource = root.findMember(new Path(containerName)); 从Bundle来查找资源: Bundle bundle = Platform.getBundle(pluginId); URL fullPathString = BundleUtility.find(bundle, filePath); 得到Appliaction workspace: Platform.asLocalURL(PRODUCT_BUNDLE.getEntry("")).getPath()).getAbsolutePath(); 得到runtimeworkspace: Platform.getInstanceLocation().getURL().getPath(); 从编辑器来获得编辑文件: IEditorPart editor = ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart(); IEditorInput input = editor.getEditorInput(); if(input instanceof IFileEditorInput){ IFile file = ((IFileEditorInput)input).getFile(); }