<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
<HEAD>

<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2013. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<title>Running Eclipse</title>
</head>

<BODY BGCOLOR="#ffffff">

<h1>Running Eclipse</h1>
<!-- ************* BEGIN SECTION COPIED FROM README FILE **************** -->
<p>After installing the Eclipse SDK in a directory, you can start the Workbench
by running the Eclipse executable included with the release (you also need at least a JDK6 or JRE 6, not included with the Eclipse SDK). On Windows, the executable file is called <samp>eclipse.exe</samp>,
and is located in the <code>eclipse</code> sub-directory of the install. If
installed at <code>c:\eclipse-SDK-4.4-win32</code>, the executable is <code>c:\eclipse-SDK-4.4-win32\eclipse\eclipse.exe</code>.

<b>Note:</b> Set-up on most other operating environments is analogous. Special
instructions for Mac OS X are listed <a href="#macosx">below</a>.</p>

<h3>Allocating enough memory and solving OutOfMemoryErrors</h3>
<p>By default, Eclipse will allocate up to 384 megabytes of Java heap memory. This should
be ample for all typical development tasks. However, depending on the JRE
that you are running, the number of additional plug-ins you are using, and
the number of files you will be working with, you could conceivably have to increase this amount. 
Eclipse allows you to pass arguments directly to the Java VM using the
<code>-vmargs</code> command line argument, which must follow all other Eclipse specific arguments.
Thus, to increase the available heap memory, you would typically use:</p>
<blockquote>
  <p><code>eclipse -vmargs -Xmx&lt;memory size&gt;</code></p>
</blockquote>
<p>with the <code>&lt;memory size&gt;</code> value set to greater than
&quot;384M&quot; (384 megabytes -- the default). 
</p>
<p>
When using an Oracle JRE, you may also need to increase the size of the permanent
generation memory.  The default maximum is 64 megabytes, but more may
be needed depending on your plug-in configuration and use.  When the VM runs
out of permanent generation memory, it may crash or hang during class loading.
The maximum permanent generation size is increased using the -XX:MaxPermSize=&lt;memory size&gt; argument:</p>
<blockquote>
  <p><code>eclipse -vmargs -XX:MaxPermSize=&lt;memory size&gt;</code></p>
</blockquote>
<p>This argument may not be available for all VM versions and platforms; consult your VM documentation
for more details.
</p>
<p>
Note that setting memory sizes to be larger than the amount of available physical
memory on your machine will cause Java to &quot;thrash&quot; as it copies objects
back and forth to virtual memory, which will severely degrade your performance.
</p>
<h3>Selecting a workspace</h3>
<p>When the Workbench is launched, the first thing you see is a 
dialog that allows you to select where the workspace will be located. The
workspace is the directory where your work will be stored.
If you do not specify otherwise, Eclipse creates the workspace in your
user directory.
This workspace directory is used as the default content area for your projects
as well as for holding any required metadata. For shared or multi-workspace
installs you must explicitly specify the location for your workspace using the
dialog (or via the &quot;<code>-data</code>&quot; command line argument).</p>
<h3>Specifying the Java virtual machine</h3>
<p>Here is a typical Eclipse command line:&nbsp;</p>

<blockquote>
  <p><code>eclipse -vm c:\jdk7u45\jre\bin\javaw</code></p>
</blockquote>
<p><i>Tip:</i> It's generally a good idea to explicitly specify which Java VM to
use when running Eclipse. This is achieved with the &quot;<code>-vm</code>&quot;
command line argument as illustrated above. If you don't use &quot;<code>-vm</code>&quot;,
Eclipse will look on the O/S path. When you install other Java-based products,
they may change your path and could result in a different Java VM being used
when you next launch Eclipse.</p>
<p>To create a Windows shortcut to an installed Eclipse:</p>
<ol>
  <li>Navigate to <code>eclipse.exe</code> in Windows Explorer and use Create
    Shortcut on the content menu.</li>
  <li>Select the shortcut and edit its Properties. In the Target: field append
    the command line arguments.</li>
</ol>
<p>Opening this shortcut launches Eclipse. (You can drag the shortcut to the 
Windows Desktop if you want to keep it in easy reach.)</p>

<h3><a name="macosx">Mac OS X</a></h3>
<p>On Mac OS X, you start Eclipse by double clicking the Eclipse application. If you need to 
pass arguments to Eclipse, you'll have to edit the <code>eclipse.ini</code> file
inside the Eclipse application bundle: select the Eclipse application bundle icon while holding down the Control Key.
This will present you with a popup menu. Select &quot;Show Package Contents&quot; in the popup menu.
Locate <code>eclipse.ini</code> file in the <code>Contents/MacOS</code> sub-folder and open it with your favorite text editor to edit the command line options.
</p>

<p>
On MacOS X you can only launch a UI program more than once if you have separate
copies of the program on disk. The reason for this behavior is that every UI
application on Mac can open multiple documents, so typically there is no need
to open a program twice. Since Eclipse cannot open more than one workspace, this means you have to make
a copy of the Eclipse install if you want to open more then one workspace at
the same time (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=139319">139319</a>).
</p>

<p>If you need to launch Eclipse from the command line, you can use the symbolic link &quot;eclipse&quot; in the
top-level eclipse folder. It refers to the eclipse executable inside the application bundle and takes
the same arguments as &quot;eclipse.exe&quot; on other platforms. 
</p>
<p>On Mac OS X 10.4 and later, you may notice a slow down when working with significant
numbers of resources if you allow Spotlight to index your workspace. To prevent this, start
System Preferences, select the Spotlight icon, then the Privacy tab, then click the Add button
(&quot;+&quot;) and find your workspace directory in the dialog that appears.</p>
<h3><a name="SharedInstall">Shared Install</a></h3>
<p>The startup speed of a shared install can be improved if proper cache information is stored in the shared 
install area. To achieve this, after unzipping Eclipse distribution, run Eclipse once with the &quot;-initialize&quot; 
option from an account that has a write access to the install directory.</p>
<!-- ************* END SECTION COPIED FROM README FILE **************** -->

<h1>Advanced Topics in Running Eclipse </h1>

<p>The Eclipse executable and the platform itself offer a number of execution 
  options of interest to people developing or debugging parts of Eclipse. This 
  is a list of the commonly used options, for a full list see the Eclipse runtime 
  options page in the Platform Plug-in Developer Guide. The general form of running 
  the Eclipse executable is:</p>

<blockquote>

<pre>eclipse [platform options] [-vmargs [Java VM arguments]]</pre>

</blockquote>

<TABLE width="95%" border="1">
  <caption>
  <b> Eclipse Startup Parameters </b> 
  </caption>
  <TBODY>
    <tr> 
      <th width="31%"> <b>Command</b></th>
      <th width="65%"><b>Description</b></th>
      <TD width="4%"><b>Since</b></TD>
    </tr>
    <tr> 
      <TD vAlign="top" width="31%"> <pre><b>-arch</b> <var>architecture</var></pre></TD>
      <TD width="65%">Defines the processor architecture on which the Eclipse 
        platform is running. The Eclipse platform ordinarily computes the optimal 
        setting using the prevailing value of Java <code>os.arch</code> property. 
        If specified here, this is the value that the Eclipse platform uses. The 
        value specified here is available to plug-ins as Platform.getOSArch(). 
        Example values: &quot;x86&quot;, &quot;sparc&quot;, &quot;PA-RISC&quot;, 
        &quot;ppc&quot;.</TD>
      <TD width="4%">2.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%"> <PRE><b>-application</b> <var>applicationId</var></PRE></TD>
      <TD width="65%">The application to run. Applications are declared by plug-ins 
        supplying extensions to the org.eclipse.core.runtime.applications extension 
        point. This argument is typically not needed. If specified, the value 
        overrides the value supplied by the configuration. If not specified, the 
        Eclipse Workbench is run.</TD>
      <TD width="4%">1.0</TD>
    </TR>
    <tr> 
      <TD vAlign="top" width="31%"> <pre><b>-clean</b></pre></TD>
      <TD width="65%">Cleans cached data used by the OSGi framework and Eclipse runtime. 
      Try to run Eclipse once with this option if you observe startup errors after install, 
      update, or using a shared configuration. </TD>
      <TD width="4%">3.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top" width="31%"> <pre><b>-configuration</b> <var>configURL</var></pre></TD>
      <TD width="65%">The location for the Eclipse Platform configuration file, 
        expressed as a URL. The configuration file determines the location of 
        the Eclipse platform, the set of available plug-ins, and the primary feature. 
        Note that relative URLs are not allowed. The configuration file is written 
        to this location when the Eclipse platform is installed or updated. </TD>
      <TD width="4%">2.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%"><PRE><b>-consolelog</b></PRE></TD>
      <TD width="65%">Mirrors the Eclipse platform's error log to the console 
        used to run Eclipse. Handy when combined with <code>-debug</code>.</TD>
      <TD width="4%">1.0</TD>
    </TR>
    <tr> 
      <TD vAlign="top" width="31%"> <PRE><b>-data</b> <var>workspacePath</var></PRE></TD>
      <TD width="65%">The path of the workspace on which to run the Eclipse platform. 
        The workspace location is also the default location for projects. Relative 
        paths are interpreted relative to the directory that Eclipse was started 
        from.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%"> <PRE><b>-debug</b> [<var>optionsFile</var>]</PRE></TD>
      <TD width="65%"> Puts the platform in debug mode and loads the debug options 
        from the file at the given location, if specified. This file indicates 
        which debug points are available for a plug-in and whether or not they 
        are enabled. If a file location is not given, the platform looks in the 
        directory that eclipse was started from for a file called ".options". 
        Both URLs and file system paths are allowed as file locations. </TD>
      <TD width="4%">1.0</TD>
    </TR>
    <tr> 
      <TD width="31%" height="133" vAlign="top"> <PRE><b>-dev</b> [<var>classpathEntries</var>]</PRE></TD>
      <TD width="65%">Puts the platform in development mode. The optional classpath 
        entries (a comma separated list) are added to the runtime classpath of 
        each plug-in. For example, when the workspace contains plug-ins being 
        developed, specifying <code>-dev bin</code> adds a classpath entry for 
        each plug-in project's directory named <code>bin</code>, allowing freshly 
        generated class files to be found there. Redundant or non-existent classpath 
        entries are eliminated.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%"> <pre><b>-initialize</b></pre></TD>
      <TD width="65%"> Initializes the configuration being run. All runtime related data 
      structures and caches are refreshed. Handy with shared installs: running Eclipse once 
      with this option from an account with write privileges will improve startup 
      performance.</TD>
      <TD width="4%">3.0</TD>
    </TR>
    <TR> 
      <TD vAlign="top" width="31%"> <pre><b>-keyring</b> <var>keyringFilePath</var></pre></TD>
      <TD width="65%"> The location of the authorization database (or &quot;key 
        ring&quot; file) on disk. This argument must be used in conjunction with 
        the <code>-password</code> option. Relative paths are interpreted relative 
        to the directory that Eclipse was started from.</TD>
      <TD width="4%">1.0</TD>
    </TR>
    <tr> 
      <TD vAlign="top" width="31%"> <pre><b>-nl</b> <var>locale</var></pre></TD>
      <TD width="65%">Defines the name of the locale on which the Eclipse platform 
        is running. The Eclipse platform ordinarily computes the optimal setting 
        automatically. If specified here, this is the value that the Eclipse platform 
        uses. The value specified here is available to plug-ins as Platform.getNL(). 
        Example values: &quot;en_US&quot; and &quot;fr_FR_EURO&quot;.</TD>
      <TD width="4%">2.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top" width="31%"> <PRE><b>-nosplash</b></PRE></TD>
      <TD width="65%">Runs the platform without putting up the splash screen.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top" width="31%"> <PRE><b>-os</b> <var>operatingSystem</var></PRE></TD>
      <TD width="65%">Defines the operating system on which the Eclipse platform 
        is running. The Eclipse platform ordinarily computes the optimal setting 
        using the prevailing value of Java <code>os.name</code> property. If specified 
        here, this is the value that the Eclipse platform uses. The value specified 
        here is available to plug-ins as Platform.getOS(), and used to resolve 
        occurrences of the <code>$os$</code> variable in paths mentioned in the 
        plug-in manifest file. Example values: &quot;win32&quot;, &quot;linux&quot;, 
        &quot;hpux&quot;, &quot;solaris&quot;, &quot;aix&quot;.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%"> <pre><b>-password</b> <var>password</var></pre></TD>
      <TD width="65%">The password for the authorization database. Used in conjunction 
        with the <code>-keyring</code> option.</TD>
      <TD width="4%">1.0</TD>
    </TR>
    <tr> 
      <TD vAlign="top" width="31%"> <PRE><b>-perspective</b> <var>perspectiveId</var></PRE></TD>
      <TD width="65%">The perspective to open in the active workbench window on 
        startup. If this parameter is not specified, the perspective that was 
        active on shutdown will be opened.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top" width="31%"> <pre><b>-plugincustomization</b>
	  <var>propertiesFile</var></pre></TD>
      <TD width="65%">The location of a properties file containing default settings 
        for plug-in preferences. These default settings override default settings 
        specified in the primary feature. Relative paths are interpreted relative 
        to the directory that eclipse was started from.</TD>
      <TD width="4%">2.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top"> <pre><b>-product</b> <em>productId</em><br></pre></TD>
      <TD height="16">The ID of the product to run. The product gives the launched 
        instance of Eclipse its personality, and determines the product customization 
        information used. This replaces -feature, which is still supported for 
        compatibility.</TD>
      <TD height="16">3.0</TD>
    </tr>
    <TR> 
      <TD vAlign="top" width="31%" height="16"><pre><b>-refresh</b> </pre></TD>
      <TD width="65%" height="16">Option for performing a global refresh of the 
        workspace on startup. This will reconcile any changes that were made in 
        the file system since the platform was last run. </TD>
      <TD width="4%" height="16">1.0</TD>
    </TR>
    <TR> 
      <TD vAlign="top" width="31%" height="16"><pre><b>-showlocation</b> [<var>workspaceName</var>]</pre></TD>
      <TD width="65%" height="16">Option for displaying the location of the workspace 
        in the window title bar. In release 2.0 this option only worked in conjunction 
        with the -data command line argument. In 3.2, an optional workspace name argument was added that  displays the  provided name  in the window title bar instead of the location of the workspace. </TD>
      <TD width="4%" height="16">2.0</TD>
    </TR>
    <tr> 
      <TD vAlign="top" width="31%"> <PRE><b>-vm</b> <var>vmPath</var></PRE></TD>
      <TD width="65%">The location of Java Runtime Environment (JRE) to use to 
        run the Eclipse platform. If not specified, the launcher will attempt to find
        a JRE.  It will first look for a directory called <code>jre</code> as a sibling
        of the Eclipse executable, and then look on the operating system path.  
        Relative paths are interpreted relative to the directory that eclipse was started from.</TD>
      <TD width="4%">1.0</TD>
    </tr>
    <tr> 
      <TD vAlign="top"> <PRE><b>-vm</b><strong>args</strong> <em>args</em></PRE></TD>
      <TD>When passed to the Eclipse, this option is used to customize the operation 
        of the Java VM used to run Eclipse. If specified, this option must come 
        at the end of the command line. The given arguments are dependent on VM 
        that is being run.</TD>
      <TD>1.0</TD>
    </tr>
  </TBODY>
</TABLE>

<p>All arguments following (but not including) the -vmargs entry are passed
directly through to the indicated Java VM as virtual machine arguments (that is,
before the class to run).  <b>Note:</b> If an Eclipse startup argument, such as -data,
is provided after the Java vm arguments (-vmargs), Eclipse will not start and you will receive 
a &quot;JVM terminated. Exit code=1&quot; error.
</p>

</body>
</html>
