2

これは Eclipse に関する質問です。これらすべての Eclipse クラスの Java パッケージはorg.eclipse.core.resources.

IFile私が持っている場所に対応するものを取得したいString:

 "platform:/resource/Tracbility_All_Supported_lib/processes/gastuff/globalht/GlobalHTInterface.wsdl"

同封のIWorkspaceとがありIWorkspaceRootます。IPath上記の場所に対応する があれば、単純に を呼び出すことができますIWorkspaceRoot.getFileForLocation(IPath)

IPath場所から対応するものを取得するにはどうすればよいStringですか? または、対応するものを取得する他の方法はありIFileますか?

4

3 に答える 3

3
String platformLocationString = portTypeContainer
        .getLocation();
String locationString = platformLocationString
        .substring("platform:/resource/".length());
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot workspaceRoot = workspace.getRoot();
IFile wSDLFile = (IFile) workspaceRoot
        .findMember(locationString);
于 2008-09-17T16:32:15.713 に答える
3

IWorkspaceRoot は IContainer であるためworkspaceRoot.findMember(String name)、結果の IResource を使用して IFile にキャストすることはできませんか?

于 2008-09-17T17:15:30.477 に答える
2

org.eclipse.core.runtime.PathはIPathを実装します。

IPath p = new Path(locationString);
IWorkspaceRoot.getFileForLocation(p);

これは、ロケーション文字列が「platform:」タイプのURLでなければ機能していました。

この特定のケースでは、org.eclipse.core.runtime.Platform javadocのメモは、「正しい」ソリューションは次のようなものであることを示しています。

fileUrl = FileLocator.toFileURL(new URL(locationString)); 
IWorkspaceRoot.getFileForLocation(fileUrl.getPath());

@ [Paul Reiners]ソリューションは、ワークスペースのルートが「resources」フォルダーにあることを想定しているようです。

于 2008-09-17T16:38:14.433 に答える