<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>NetBeans IDE 5.5  Installation Instructions</title>
        <meta name="description" content="A guide to installing the NetBeans IDE on various OSs">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
        <meta name="AUDIENCE" content="NBUSER">
        <meta name="TYPE" content="ARTICLE">
        <meta name="TOPIC" content="GENERAL">
    </head>
    <body>
        <a name="top"></a>
        <h1>NetBeans<sup><small>TM</small></sup> IDE 5.5  Installation Instructions </h1>
        <blockquote>
        <p>The following instructions cover installation of both NetBeans IDE
        5.5  (standalone) as well as the NetBeans IDE 5.5  and Sun
        Java Application Server Platform Edition 9 Bundle. </p>
        
        <br>
        <h2 style="color:#0E1B55">Contents</h2>
        <ul>
            <li><a href="#standalone">NetBeans IDE Installation </a></li>
            <li><a href="#bundle">NetBeans IDE and Sun Java System Application Server
            Bundle</a><a href="#bundle"> Installation</a></li>
            <li><a href="#launching">Launching the IDE</a></li>
            <li><a href="#registerstart">Registering and Starting the Application Server</a></li>
            <li><a href="#other">Other Operating Systems </a></li>
            <li><a href="#archives">Archive Distributions </a></li>
            <li><a href="#uninstall">Uninstallation</a></li>
            <li><a href="#troubleshooting">Troubleshooting</a></li>
        </ul>

        <p><b>Note: </b>For system requirements and other information, such as launching
        the IDE with different startup parameters, see the <a href="relnotes.html">Release
        Notes</a>.</p>
        </blockquote>
        <br>

        <a name="standalone"></a>
        <h2>NetBeans IDE  Installation (Standalone Installer)</h2>
        <p>Following are instructions for installing the standalone NetBeans IDE 5.5 
        on each of the supported platforms. </p>
        <blockquote>
            <a name="windows_standalone"></a>
            <h2 style="color:#0E1B55">Windows</a></h2>
            <p>On Microsoft Windows machines, the preferred method of installing NetBeans
            IDE is using the self-extracting installer.</p>
            <blockquote>
                <p><b>To install the NetBeans IDE:</b></p>
                <ol>
                    <li>Once you have downloaded the installer file, double-click the installer's
                    icon to launch the installer. </li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next.</li>
                    <br>
                    <li>Specify an empty directory within which to install NetBeans IDE.
                        <p><b>Note:</b> This NetBeans IDE will not disrupt the
                        settings of your other NetBeans installations because
                        the IDE automatically creates a new user directory
                        when launched (<tt>${HOME}/.netbeans/5.5</tt>). </li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list
                    of suitable choices in the list, then click Next.</li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="solaris_standalone"></a>
            <h2 style="color:#0E1B55"> Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</h2>
            <p>On machines running Solaris operating system, the binary installer is 
            the preferred method for installing NetBeans IDE. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE:</b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer.</li><br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install NetBeans IDE, then
                    click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the
                    list of suitable choices in the list, then click Next.<br>
                    <p>The installer searches for JDKs installed on your system
                    	and prompts you  to specify which one it should use. You
                    	can also specify which  JDK the IDE should use from
                    	the command line. For example:
                    <blockquote><code> $&nbsp;./<i>your_binary_executable</i>&nbsp;-is:javahome&nbsp;<i>path_to_your_jdk</i></code> </blockquote></li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="linux_standalone"></a>
            <h2 style="color:#0E1B55">Linux</a></h2>
            <p>On Linux machines, the binary installer is the preferred method for installing
            NetBeans IDE.</p>
            <blockquote>
                <p><b>To install the NetBeans IDE:</b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer.</li>
                    <br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code> <br>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install NetBeans IDE, then
                    click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the
                    list of suitable choices in the list, then click Next.<br>
                        <p>The installer searches for JDKs installed on your system
                    	and prompts you  to specify which one it should use. You
                    	can also specify which JDK  the IDE should use from
                    	the command line. For example:
                    <blockquote><code> $&nbsp;./<i>your_binary_executable</i>&nbsp;-is:javahome&nbsp;<i>path_to_your_jdk</i></code></blockquote></li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="macintosh_standalone"></a>
            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p>On Macintosh OS X, NetBeans is packaged as a native application bundle. The
            preferred method of installing NetBeans IDE is using the tarball (<tt>.tar.gz</tt>)
            file.</p>
            <blockquote>
                <p><b>To install the NetBeans IDE:</b></p>
                <ol>
                    <li>Download the tarball to the desired location on your system. </li>
                    <br>
                    <li>Double-click the file to unpack the contents on your system. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
        </blockquote>
        <br>

<p align="center"><a href="#top">top</a></p><br>

        <a name="bundle"></a>
        <h2>NetBeans IDE and Sun Java System Application Server Bundle Installation</h2>
        <p>Following are instructions for installing the NetBeans IDE 5.5  and 
        Sun Java System Application Server Platform Edition 9 bundle on all supported platforms.</p>
        <blockquote>
            <a name="windows_bundle"></a>
            <h2 style="color:#0E1B55"> Windows</h2>
            <p>On Microsoft Windows machines, the preferred method of installing
            NetBeans IDE and Sun Java System Application Server bundle is using 
            the self-extracting installer.</p>
            <blockquote>
                <p><b>To install the NetBeans IDE 5.5  and Sun Java System Application Server
                Platform Edition 9 bundle: </b></p>
                <ol>
                    <li>Once you have downloaded the installer file, double-click the installer's
                    icon to launch the installer. </li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next.</li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE. The
                    installation directory must not contain spaces in its name. <br>
                        <p><b>Note:</b> This NetBeans IDE will not disrupt the settings of
                        your other NetBeans installations because the IDE automatically creates
                        a new user directory when launched (<tt>${HOME}/.netbeans/5.5</tt>).</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list of suitable
                    choices in the list, then click Next.</li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="solaris_bundle"></a>
            <h2 style="color:#0E1B55">Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</h2>
            <p>On machines running Solaris operating system, the binary installer is the preferred method for 
            installing NetBeans IDE and Sun Java System Application Server bundle. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE 5.5  and Sun Java System 
                Application Server Platform Edition 9 bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer. </li>
                    <br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in it's
                    name.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li> Choose the JDK you want the IDE to use from the
                    list of suitable choices in the list, then click Next.</li><br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="linux_bundle"></a>
            <h2 style="color:#0E1B55">Linux</h2>
            <p>On Linux machines, the binary installer is the preferred method
            for installing  NetBeans IDE and Sun Java System Application Server
            bundle. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE and Sun Java System Application Server
                bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer. </li>
                    <br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in it's
                    name.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list
                    of suitable choices in the list, then click Next.</li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="macintosh_bundle"></a>
            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p>On Mac OS X, the NetBeans and Sun Java System Application Server
            bundle is packaged as a jar file. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE and Sun Java System Application Server
                bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer.
                    <li>If necessary, change the installer file's permissions to make the binary
                    executable by typing from a command prompt:
                    <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                    <p><b>Note:</b> be sure to replace <code><i>your_binary_executable</i></code> with
                    the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>Launch the installer by double-clicking the bundle installer jar file.</li>
                    <br>
                    <li>On the install wizard's initial panel, click Next to continue.</li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next.</li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in it's
                    name. By default, NetBeans is installed in the Applications directory.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory
                    within which to install the Application Server and click Next.
                    By default, the Application server is installed in the
                    <tt>SUNWappserver</tt> subdirectory of your home directory.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list
                    of suitable choices in the list, then click Next.</li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect the installation process.</p>
                </div>
            </blockquote>
        </blockquote>
        <br>
        
<p align="center"><a href="#top">top</a></p><br>

<!--
        <a name="other"> <h2>Other Operating Systems</h2></a>
        <p>If you are using an operating system for which there is no installer you can
        still use NetBeans IDE by downloading and installing archive distributions.
        For more information, see the <a href="#archives">Archive Distributions</a>
        section below. </p>
        <br>

<p align="center"><a href="#top">top</a></p><br>
-->

        <a name="launching"></a>
        <h2>Launching the IDE</h2>
        <p>Following are instructions for starting the NetBeans IDE. If you are using
        an operating system for which there is no installer you can still use NetBeans
        IDE by downloading and installing archive distributions. For more information,
        see the <a href="#archives">Archive Distributions</a>
        section below. </p>

        <blockquote>
            <h2 style="color:#0E1B55">Windows</h2>
            <p><b>To start the IDE on Microsoft Windows machines, do one of the following:</b></p>
            <ul>
                <li>Double-click the NetBeans IDE icon on your desktop.</li>
                <br>
                <li>From the Start menu, select NetBeans IDE 5.5 &nbsp;&gt;&nbsp;NetBeans IDE.</li>
            </ul>
            <br>

            <h2 style="color:#0E1B55">Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</h2>
            <p><b>To start the NetBeans IDE on Solaris systems:</b></p>
            <ol>
                <li>Navigate to the <tt>bin</tt> subdirectory of your installation. </li>
                <br>
                <li>Execute the launcher script by typing <tt>./netbeans</tt>.
            </ol>
            <br>

            <h2 style="color:#0E1B55">Linux</h2>
            <p><b>To start the NetBeans IDE on Linux systems:</b></p>
            <ol>
                <li>Navigate to the <tt>bin</tt> subdirectory of your installation. </li>
                <br>
                <li>Execute the launcher script by typing <tt>./netbeans</tt>.
            </ol>
            <br>

            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p><b>To start the NetBeans IDE on Mac OS X systems:</b></p>
            <ul>
                <li>Double-click the NetBeans IDE application icon. </li>
            </ul>
        </blockquote>
        <br>

<p align="center"><a href="#top">top</a></p><br>

        <a name="registerstart"> <h2>Registering and Starting the Application Server </h2></a>
        <p>If you used the standalone NetBeans IDE installer, you need to register
        the Application Server before you can use it.
        <blockquote>
            <p><b>Registering the Sun Java System Application Server</b></p>
            <p>To register the Sun Java System Application Server:
            <ol>
                <li>Go to Tools &gt;&nbsp;Server Manager.</li>
                <br>
                <li>In the Server Manager, click Add Server. </li>
                <br>
                <li>In the dialog box, select Sun Java System Application Server 9 and click
                Next.</li>
                <br>
                <li>Enter a name for the server instance. This name is used to identify the
                server in the IDE.</li>
                <br>
                <li>Enter the location, user name, and password. You do not need to enter
                the the installation location and domain if you are registering a remote
                instance of the server. You have to register a local installation of the
                application server before you can register remote instances.</li>
                <br>
                <li>Click Finish. </li>
            </ol>
            <p><b>Note:</b> If you used the bundle installer, the Sun Java System Application
            Server was installed and configured automatically so it is not necessary to
            carry out the registration procedure outlined above. </p>
            <br>
            <p><b>Starting the Sun Java System Application Server</b></p>
            <p>To start the Application Server:
            <ol>
                <li>In the Runtime window, right-click the newly-created localhost node and
                choose Start/Stop Server from the contextual menu. </li>
                <br>
                <li>In the Server Status dialog, click Start Server.</li>
                <br>
                <li> Click Close to close the dialog box.</li>
            </ol>
            <div class="greybox">
                <p><b>Note: </b>The NetBeans IDE and Sun Java System Application Server bundle
                creates the <tt>admin</tt> user with password <tt>adminadmin</tt> by default.
                Users should use these settings to log in via the web console. </p>
            </div>
        </blockquote>
        <br>

<p align="center"><a href="#top">top</a></p><br>

        <a name="archives"> <h2>Archive Distributions</h2></a>
        <p>If you are using an operating system for which there is no installer
        you can still use NetBeans IDE by downloading and installing archive
        distributions. You can also install archive distributions of the IDE if
        you want to test development builds.</p>
        <blockquote>
            <p><b>To install archive NetBeans IDE distributions: </b></p>
            <ol>
                <li>Navigate to the directory that contains the archive file. </li>
                <br>
                <li>Unpack the archive using the appropriate utilities for your system.
            </ol>
            <p><b>To launch archive NetBeans IDE distributions:</b> </p>
            <ol>
                <li>Navigate to the <tt>bin</tt> subdirectory of your NetBeans IDE installation.</li>
                <br>
                <li>Execute the appropriate launcher for your system. </li>
            </ol>
            <p>The following launchers are included in the archive distributions: </p>
            <ul>
                <li><tt>netbeans.exe</tt> - Windows</li>
                <li><tt>nb.exe</tt> - Windows (from within a console window)</li>
                <li><tt>netbeans</tt> - UNIX, Linux </li>
                <li><tt>NetBeans </tt> - Mac OS X </li>
                <li><tt>netbeans.cmd</tt> - OS/2 </li>
                <!--<li><tt>netbeansopenvms.com</tt> - OpenVMS -->
            </ul>
            <p>If there is no specific launcher for your operating system, you may need
            to create one by modifying the appropriate script. If your machine supports
            JDK 1.5.0 or greater you should, however, be able to run the IDE.
            <p><b>Note</b>: If you create a launcher, you can contribute it to the NetBeans
            project. For more information, see <a href="https://netbeans.org/community/contribute/index.html">Contributing
            to netbeans.org</a>. </p>
        </blockquote>
        <br>

<p align="center"><a href="#top">top</a></p><br>

    <a name="uninstall"> <h2>Uninstalling NetBeans IDE </h2></a>
    <p>If necessary, you can uninstall the NetBeans IDE using the following procedures.</p>
    <blockquote>
        <h3 style="color:#0E1B55">Uninstalling the NetBeans IDE 5.5  from Windows</h3>
        <blockquote>
            <p><b>To uninstall NetBeans IDE:</b></p>
            <ol>
                <li>From your system's Start menu, choose Control Panel.</li>
                <br>
                <li>Double-click the Add or Remove Programs icon.</li>
                <br>
                <li>Select NetBeans IDE 5.5  from the list and click Remove.</li>
            </ol>
            
            <p><b>To uninstall the Sun Java System Application Server
            Platform Edition 9:</b></p>
            <ol>
                <li>From your system's Start menu, open the Control Panel.</li>
                <br>
                <li>Double-click the Add or Remove Programs icon.</li>
                <br>
                <li>Select the Sun Java System Application Server Platform
                Edition 9 from the list and click Remove.</li>
            </ol>
            <!--<p><b>Note:</b> If you uninstall the J2SE JDK software, but
            wish to continue using NetBeans IDE, you must set the IDE's
            <tt>-jdkhome</tt> parameter to point to an alternate installation of the J2SE
            JDK as outlined below.</p>-->
        </blockquote>

        <h3 style="color:#0E1B55">Uninstalling the NetBeans IDE 5.5  from Solaris (SPARC and x86 Platform Editions) </h3>
        <blockquote>
            <p><b>To uninstall NetBeans IDE:</b></p>
            <ol>
                <li>Navigate to the <tt>_uninst</tt> subdirectory of your NetBeans
                IDE installation directory.</li>
                <br>
                <li>Type <tt>./uninstaller</tt> to run the InstallShield uninstaller.</li>
            </ol>
            
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun
                Java System Application Server Platform Edition 9.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
        </blockquote>

        <h3 style="color:#0E1B55">Uninstalling the NetBeans IDE 5.5  from Linux </h3>
        <blockquote>
            <p><b>To uninstall NetBeans IDE:</b></p>
            <ol>
                <li>Navigate to the <tt>_uninst</tt> subdirectory
                of your NetBeans IDE installation directory.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstaller</tt> to run
                the InstallShield uninstaller.</li>
            </ol>
            
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun
                Java System Application Server Platform Edition 9.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
        </blockquote>

        <h3 style="color:#0E1B55">Uninstalling the NetBeans IDE 5.5  from Macintosh OS X </h3>
        <blockquote>
            <p><b>To uninstall NetBeans IDE:</b></p>
            <ol>
                <li>Navigate to the installation location of the NetBeans IDE.
                By default, NetBeans is installed in the Applications directory.</li>
                <br>
                <li>Right-click the NetBeans icon and choose Show Package Contents
                from the pop-up menu.</li>
                <br>
                <li>In the window that appears, navigate to the <tt>_uninst</tt>
                subdirectory. </li>
                <br>
                <li>In a terminal window, type <tt>./uninstaller</tt> to run the InstallShield uninstaller.</li>
            </ol>
            
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun Java System
                Application Server Platform Edition 9. By default, the Application
                server is installed in the <tt>SUNWappserver</tt> subdirectory of your
                home directory.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
        </blockquote>
    </blockquote>

<p align="center"><a href="#top">top</a></p><br>

        <a name="troubleshooting"><h2>Troubleshooting</h2></a>
        <p>If you experience problems installing or running the software, see the
        list of issues below for workarounds. For a complete list of known issues,
        system requirements and other useful information, see the <a href="relnotes.html">Release
        Notes</a>. </p>
        <p> Following are the unresolved issues for this release that could affect
        or disrupt the installation process: </p>
        <ul>
            <!--<li><h3>General Issues</h3>
            <blockquote>
                <p><b>Description:</b></p>
                <p>The installer for the NetBeans IDE and Sun Java System Application
                Server bundle does not let you install on JDK 6.0, because Sun Java
                System Application Server Platform Edition 8.2 has several serious
                issues on pre-release versions of JDK 6.0. However, you can install
                the NetBeans IDE standalone installer on JDK 6.0.
            </blockquote>
            <br>-->
            <!--
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=72601">Issue #72601</a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>After specifying the location of the Sun Java System Application
                Server and clicking Next, the wizard page becomes blank, and it is impossible to
                continue the installation.
                <p><b>Workaround:</b></p>
                <p>In the wizard, press Cancel. On your system, navigate to
                the NetBeans IDE installation directory that installer has just created and
                delete that directory. Then run the installer again and specify a location for the
                application server installation directory that is not inside of the NetBeans IDE
                installation directory.</p>
            </blockquote>
            <br>-->
            
            <li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26965">Issue #26965</a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>When using JDK installations that include an incompatible version of <tt>sax.jar</tt>,
                the IDE installer crashes with the following message:
                &quot;The wizard cannot continue because of the following error: could
                not load wizard specified in /wizard.inf (104)&quot;
                <p><b>Workaround:</b></p>
                <p>Temporarily remove <tt>jre/lib/endorsed/sax.jar</tt> from the JDK directory
                during IDE installation.
                </blockquote><br>

            <!--
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52856">Issue #52856 (Windows XP only) </a>
            <blockquote>
            <p><b>Description:</b></p>
                <p>Sun Java System Application Server  installation fails. Note that
                this problem has been known to occur both when using the NetBeans IDE 5.5
                and Sun Java System Application Server Platform Edition 8.2 Bundle
                installer as well as the stand-alone Application Server installer.
                This happens when a previous installation of the Application Server has failed and
                subsequent attempts at  uninstallation were also unsuccessful (i.e. some
                registry entries or configuration files weren't deleted).
                <p><b>Workaround:</b></p>
                <p>If this happens, remove all previous installations of the Sun Java
                System Application Server. Then delete the installer's <code>&lt;USERHOME&gt;\Local
                Settings\temp\</code> directory and the Application Server's <code><userhome>\Application
                Data\Sun\tmp\</code> directory (note that files may also be located in <code>&lt;WINDIR&gt;\Sun\</code>).
                If a previous uninstallation attempt of the Application Server was
                unsuccessful, also delete the <code>&lt;SYSTEMDIR&gt;/productregistry</code> file.
                Next, create a new directory within which to install the software
                and ensure that the directory is empty and writable. Finally, reinstall
                the Application Server in the new location on your system. <!--<b>Note: </b>in
                general, it is recommended that users use the provided uninstaller
                to remove Application Server installations.
            </blockquote><br>
            -->

            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=65482">Issue #65482 (Linux only) </a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>Unable to install NetBeans on some Mandrake/Mandriva Linux distributions. 
                During initialization, the installer displays the following message:
                    <blockquote>
                        <pre>Initializing InstallShield Wizard........<br>./netbeans-5_0-bin-linux.bin: line 189: bc: command not found<br>./netbeans-5_0-bin-linux.bin: line 404: [: : integer expression expected </pre>
                    </blockquote>
                <p><b>Workaround:</b></p>
                <p>NetBeans installer uses GNU's bc utility, which doesn't seem to install
                by default in Mandriva. If you experience this problem, install GNU's
                bc utility manually prior to installing NetBeans. If you have an active
                Internet connection, you can  run <tt>urpmi bc</tt> from the command
                line to accomplish this. Note that it is also possible to download
                the appropriate RPM and install using the <tt>rpm -i
                &lt;bc_package&gt;.rpm</tt> command.</p>
            </blockquote>
            <br>

            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=67530">Issue #67530 </a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>After starting the installer, you get a message that says "Welcome
                to the Install Wizard for ERROR: null". This could be caused by running
                multiple installers simultaneously or by running the installer after another
                installer that has failed to exit.</p>
                <p><b>Workaround:</b></p>
                <p>Delete the contents of the <tt>\InstallShield\Universal\Common</tt> directory
                and then restart the installer.</p>
                <p>On Windows systems, this directory is located at <tt>C:\Program Files\Common files\InstallShield\Universal\Common</tt>.</p>
                <p>On Solaris and Linux systems, this directory is located at
                <tt><i>/$HOME</i>/InstallShield/Universal/Common</tt>.</p>
            </blockquote>

            <li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52012">Issue #52012 (only Turkish locale on Windows XP systems)</a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>For systems set to use the Turkish locale, the installer does not successfully
                finish.</p>
                <p><b>Workaround:</b></p>
                <p>Cancel the installer. On your system, switch to the English (United States) locale and then
                retstart the installer. </p>
                <p>On Windows XP systems, you can switch locales on your system by choosing Start | Control Panel
                 and double-clicking Regional and Language Options. Then select the locale from the
                 drop-down list in the Standards and Formats section of the dialog box.</p>
            </blockquote><br>
        </ul>

    <p align="center"><a href="#top">top</a></p><br>
    </body>
</html>
