2016-12-27 7 views
0

私はEclipseプラグインを作成しています。プラグインでは、私のためのコマンド文字列を作ることができる関数を書いた。文字列には "-cp jar_path"が含まれています。 jarパスはeclipseの "jarの追加"ボタンから構成されます(プロジェクトのプロパティー設定では、 "jarの追加"は "java build path - > libraries"の下にあります)。 jarファイルの絶対パスを取得する必要がありますが、「jarファイルを追加」を使用すると、次のコードを使用して相対パスしか取得できません。私は "外部ジャーを追加"を使用することは分かりますが、 "ジャーを追加"する必要があります。アプローチはありますか? もう1つの質問は、「参照されたライブラリ」の下に追加されたjarを右クリックし、「show in - > properties」をクリックすると、IDEがjarの絶対位置を取得できることです。私は多分IDEはworkspace/.metadata/.plugins/com.eclipse.core.resources/.projectsから取得すると思います。 しかし、それが本当であっても、一般的な読者がフォーマットを解析できないため、これらのファイルを直接読み取ることはできません。eclipseプラグインを開発する場合、「Jarを追加する」を使ってjarファイルの絶対パスを取得できますか?

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(); 
    } 
} 
+0

これは従うことが非常に困難です。何が 'jars'ボタンを追加するのですか?いくつかのコードを見せてください。 –

+0

質問を編集して、コードやその他の詳細を入力してください。 –

+0

'IProject'クラスは' .projects'メタデータの情報へのインタフェースです。 –

答えて

0

あなたはworkpace相対パスをお持ちの場合は、のようなものを使用して絶対的な場所に変換することができます:

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

IPath rootPath = root.getLocation(); 

IPath fullPath = rootPath.append("/project/container/file"); 
0
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(); 
関連する問題