2016-01-21 106 views
3

我正在開發一個使用Eclipse插件的Eclipse插件,它將在工具欄中添加一個菜單項。我的插件項目取決於它位於同一插件項目中的一個文件,我想要該文件的路徑。 下面是我用來獲取路徑的示例代碼:從Eclipse中運行運行的同時如何從eclipse插件獲取資源路徑

Bundle bundle = Platform.getBundle("com.feat.eclipse.plugin"); 
URL fileURL = bundle.getEntry("webspy/lib/file.txt"); 
File file = null; 
String path=null; 
try { 
    file = new File(FileLocator.resolve(fileURL).toURI()); 
    path = file.getAbsolutePath(); 
} catch (URISyntaxException e1) { 
    e1.printStackTrace(); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

- > Eclipse的應用它給我正確的路徑。但是,當我將我的插件作爲jar導出並添加到我的eclipse插件文件夾中時,它不會給我正確的路徑。請幫我解決這個問題。

回答

3

用途:

URL url = FileLocator.find(bundle, new Path("webspy/lib/file.txt"), null); 

url = FileLocator.toFileURL(url); 

File file = URIUtil.toFile(URIUtil.toURI(url)); 

當你的文件都裝在一個罐子裏FileLocator.toFileURL將它們複製到一個臨時位置,這樣就可以使用File訪問它們。

+0

謝謝格雷格,它爲我工作。 – user3355101

0

JAR中的文件沒有java.io.File,因爲它們位於JAR文件中。

您可能想要FileLocator.openStream(...)來讀取文件內容。

如果您確實需要java.io.File,那麼您可以考慮使用Eclipse EFS及其IFileStore.toLocalFile(...)將文件解壓縮到臨時目錄。像EFS.getStore(fileURL).toLocalFile(EFS.CACHE, null)這樣的應該做你想做的,但記住,將文件放在臨時目錄,並在Eclipse出口刪除它。