Difference between revisions of "FAQ How do I find out the install location of a plug-in?"

From Eclipsepedia

Jump to: navigation, search
m
Line 5: Line 5:
 
using them only to read files, it does not matter.  
 
using them only to read files, it does not matter.  
  
The following snippet  
+
In Eclipse 3.1 and earlier, the following snippet  
 
opens an input stream on a file called <tt>sample.gif</tt> located  
 
opens an input stream on a file called <tt>sample.gif</tt> located  
 
in a subdirectory, called <tt>icons</tt>, of a plug-in&#146;s install directory:
 
in a subdirectory, called <tt>icons</tt>, of a plug-in&#146;s install directory:
Line 23: Line 23:
 
must exist in the local file system, so you cannot rely on this
 
must exist in the local file system, so you cannot rely on this
 
method&#146;s returning a file system URL under all circumstances in the future.
 
method&#146;s returning a file system URL under all circumstances in the future.
 +
 +
In Eclipse 3.2, the preferred method seems to be:
 +
 +
<pre>
 +
  Bundle bundle = Platform.getBundle(yourPluginId);
 +
  Path path = new Path("icons/sample.gif");
 +
  URL fileURL = FileLocator.find(bundle, path, null);
 +
  InputStream in = fileURL.openStream();
 +
</pre>
  
 
== See Also: ==
 
== See Also: ==

Revision as of 16:25, 16 June 2006

You should generally avoid making assumptions about the location of a plug-in at runtime. To find resources, such as images, that are stored in your plug-in’s install directory, you can use URLs provided by the Platform class. These URLs use a special Eclipse Platform protocol, but if you are using them only to read files, it does not matter.

In Eclipse 3.1 and earlier, the following snippet opens an input stream on a file called sample.gif located in a subdirectory, called icons, of a plug-in’s install directory:

   Bundle bundle = Platform.getBundle(yourPluginId);
   Path path = new Path("icons/sample.gif");
   URL fileURL = Platform.find(bundle, path);
   InputStream in = fileURL.openStream();

If you need to know the file system location of a plug-in, you need to use Platform.resolve(URL). This method converts a platform URL to a standard URL protocol, such as HyperText Transfer Protocol (HTTP), or file. Note that the Eclipse Platform does not specify that plug-ins must exist in the local file system, so you cannot rely on this method’s returning a file system URL under all circumstances in the future.

In Eclipse 3.2, the preferred method seems to be:

   Bundle bundle = Platform.getBundle(yourPluginId);
   Path path = new Path("icons/sample.gif");
   URL fileURL = FileLocator.find(bundle, path, null);
   InputStream in = fileURL.openStream();

See Also:


This FAQ was originally published in Official Eclipse 3.0 FAQs. Copyright 2004, Pearson Education, Inc. All rights reserved. This text is made available here under the terms of the Eclipse Public License v1.0.