<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
  Copyright 2008 Sun Microsystems, Inc. 
  All Rights Reserved.
-->
<html>
   <head>
      <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
      <link rel="shortcut icon" href="https://netbeans.org/favicon.ico" type="image/x-icon" >
      <title>NetBeans IDE, GlassFish, and MySQL Tools Bundle Installation Instructions</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
      <meta name="description" content="Installation instructions for the NetBeans IDE 6.0 Preview">
      <meta name="keywords" content="NetBeans, IDE, free, open source, developer, installer, engine, NetBeans, NetBeans IDE, NetBeans installer, NetBeans development environment, CSS, installer API" >
      <style type="text/css">
         <!--
         .style2 {color: #000000}
         -->
      </style>
   </head>
   <body>
      <a name="top"></a>
      
      <h1>NetBeans IDE with the GlassFish and MySQL Bundle Installation Instructions</h1>
      <div class="articledate" style="margin-left: 0px;">Last updated: 
      <!-- #BeginDate format:Am1 -->May 14, 2008<!-- #EndDate --></div>
      <p>This document describes how to install the NetBeans IDE with the GlassFish and MySQL  bundle  on your system.</p>
      
      <p><b>Contents</b></p>
      <ul>
         <li><a href="#requiredsoftware" title="Required Software">Required Software</a></li>
         <li><a href="#supportedPlatforms">Supported Platforms</a></li>
         <li><a href="#startdownload" title="Starting the Download">Starting the Download</a></li>
         
         <li><a href="#installation" title="Installing the Software">Installing the Software</a><div>
               <ul>
                  <li><a href="#install_windows">Microsoft Windows, Solaris OS, and Linux</a></li>
                  <li><a href="#install_mac">Mac OS X</a> </li>
         </ul></div></li>
         <li><a href="#uninstallation" title="Uninstalling the Software">Uninstalling the Software</a></li>
         <li><a href="#upgrading">Upgrading and Coexisting with Previous Versions</a> </li>
         <li><a href="#troubleshooting" title="Troubleshooting">Trouble</a><a href="#troubleshooting" title="Troubleshooting">shooting</a></li>
         
         <li><a href="#moreinformation" title="More Information">More In</a><a href="#moreinformation" title="More Information">formation</a></li>
      </ul>
      <h2><a name="requiredsoftware" id="requiredsoftware"></a>Required Software</h2>
      <p>Before you install the NetBeans IDE with the GlassFish and MySQL  bundle, the Java SE Development Kit (JDK) 5 Update 14 (version 1.5.0_14) or newer (including JDK 6 Update 4) must be installed on your system. If you do not have an installation of JDK 5 Update 14 or newer, you cannot proceed with the installation. For more information about the required JDK version, see the Required Software section in the <a href="./relnotes.html">NetBeans IDE 6.1 Release Notes</a>. </p>
      
      <p align="center"><a href="#top"></a></p>
      <h2><a name="supportedPlatforms"></a>Supported Platforms</h2>
      The NetBeans IDE with the GlassFish and MySQL  bundle has been tested on the following platforms:<br/>
      <br/>
      
      <ul>
         <li>Windows XP, Vista (x32)</li>
         <li>Linux Ubuntu 7</li>
         <li>Solaris OS version 10 (x86, sparc)</li>
         <li>Mac OS X 10.4, 10.5 (x86)</li>
      </ul>
      <h2><a name="startdownload" id="startdownload"></a>Starting the Download</h2>
      <ol>
         <li>Navigate to the NetBeans IDE with the GlassFish and MySQL tools bundle  <a href="http://download.netbeans.org/netbeans/6.1/mysql_bundle/">Download page</a>.</li>
         
         <li>Chose your platform and click the Download button below.</li>
         <li>Save the installer file to your system.</li>
      </ol>
      <p align="center"><a href="#top">top</a></p>
      <h2><a name="installation"></a>Installing the Software</h2>
      
      <p>Follow the instructions in this section to install the NetBeans IDE with the GlassFish and MySQL  bundle on your system. These installation instructions apply to all <a href="#supportedPlatforms">supported platform</a>s. </p>
      <h3><a name="install_windows" id="install_windows">Microsoft Windows, Solaris OS, and Linux</a></h3>
      <p><b>To install the software:</b></p>
      
      <ol>
         <li>After the download completes, run the installer file: <br>
            <ul>
               <li>For Windows, the installer executable file has the <tt>.exe</tt> extension. Double-click the installer file to run it. You need to have Administrator privileges
               to install the bundle. </li>
               
               <li>For Solaris and Linux platforms, the installer file has the <tt>.sh</tt> extension. For these platforms, you need to make the installer files executable by using the following command: <tt><br>
               chmod +x ./&lt;<i>installer-file-name</i>&gt;</tt></li>
               
            </ul>
         The installation wizard starts.</li>
         <li>On  the Welcome panel, choose the components to install. Select the checkbox next to the required component. The following option are available:
            <ul>
               <li>GlassFish V2 UR2</li>
               <li>MySQL  5.0 Community Server</li>
         </ul> </li>
         <li>On the License agreement panel, review the license agreement, select the acceptance checkbox, and click Next.</li>
         <li>At the NetBeans IDE Configuration panel, proceed as follows::<br>
            <ol type="a">
               <li>Specify the installation directory for the NetBeans IDE. Accept the default setting or specify another directory.<br>
                  
               <b>Note:</b> The installation directory must be empty, and the user profile you are using to run the installer must have read/write permissions for this directory.</li>
               <li>Specify the path to the  JDK to use with the NetBeans IDE. Accept the default setting or select a different location from the drop-down list.<br>
                  
               If the installation wizard did not find a compatible JDK installation to use with the NetBeans IDE, your JDK is not installed in the default location. In this case, specify the path to an installed JDK or cancel the current installation, install the required JDK version, and restart this installation.</li>
               <li>Click Next.</li>
            </ol>
         </li>
         <li>If you did not choose to install the GlassFish application server in step 2, skip this step. Otherwise, on the GlassFish Application Server Installation and Configuration panel, do the following:<br>
            <ol type="a">
               <li>Specify the  installation directory for the application server: accept the default setting or browse to another installation directory. <br>
                  
               <b>Note:</b> The installation directory you specify must be empty, and the user profile you are using to run the installer must have read/write permissions for this directory. </li>
               <li>From the list of compatible JDK installations, choose the JDK you want the application server to use or click the Browse button to specify another JDK installation.</li>
               
               <li>Change the username and password for the default server domain or accept the defaults and click Next.<br>
               The default username and password are <tt>admin</tt> and <tt>adminadmin</tt>.</li>
               <li>Verify the default port values (<tt>HTTP</tt>, <tt>HTTPS</tt>, and <tt>Admin</tt>) for the application server or change them if necessary.</li>
               
               <li>Click Next.</li>
            </ol>
         </li>
         <li>If you did not choose to install the MySQL 5.0 Community Server  in step 2, skip this step. Otherwise, on the MySQL 5.0 Community Server Installation, do the following:
            <ul>
               <li>Specify the installation directory for the database server: accept the default setting or select another directory.</li>
               <li>To specify a password for the root user, make sure that the Modify Security Settings checkbox is enabled. Then type a password in the Root Password edit box and confirm the password in the Retype Password edit box. <br/>
               <strong>Note:</strong> The root is the user who has full access to processing databases on the installation of the MySQL database server. By default, the root user's password is empty.</li>
               <li>To create an Anonymous account, select the relevant checkbox.</li>
               
               <li>To enable accessing the MySQL 5.0 Community Server from another machine, select the Enable TCP/IP Networking checkbox.</li>
               <li>Specify the port number which the MySQL Server installation will use   for connections. The default setting is 3306.</li>
               <li>Click Next.  </li>
            </ul>
         </li>
         <li>At the Summary page, verify that the list of components to be installed is correct and that you have adequate space on your system for the installation.</li>
         <li>Click Install to begin the installation.</li>
         <li>When the installation is completed:
            <ol type="a">
               <li>If   the GlassFish application server has been installed, you can register it. For this, select the Register the GlassFish and NetBeans IDE   after finishing the installer checkbox.</li>
               
               <li>If the GlassFish application server has not been installed,  select the Register the  NetBeans IDE after finishing the installer checkbox to register the NetBeans IDE.</li>
               <li>Click Finish to exit the wizard.</li>
            </ol>
         </li>
         <li>If you selected the Register... checkbox at the previous step, the Registration page opens in the browser. Click Register.</li>
         <li>Enter your Sun Online Account or create it on the <a href="http://www.sun.com">www.sun.com</a> page, which is accessible via a link.  </li>
      </ol>
      
      <p><b>Note:</b> If you encounter problems successfully completing the software installation, see <a href="#troubleshooting">Troubleshooting</a> for descriptions and suggested workarounds for unresolved issues that could affect the installation process. </p>
      <p><b>Note:</b> If you have not registered the GlassFish application server right after the installation, you can do it when you run the NetBeans IDE or open the <span class="style2">Admin console</span> of the GlassFish application server. </p>
      <p><b>Note:</b> If you have not registered the NetBeans IDE 6.1 right after the installation, you can do it when you run the NetBeans IDE.</p>
      
      <h3><a name="install_mac" id="install_mac">Mac OS X</a></h3>
      <p><b>To install the software:</b></p>
      <ol>
         <li>After the download completes, run the installer. The installer file has the <tt>.dmg</tt> extension. </li>
         <li>On the panel that opens click the package icon. The package has the <tt>.mpkg</tt> extension. The installation wizard starts.</li>
         
         <li>At the Welcome page of the installation wizard, click Continue.</li>
         <li>Review the license agreement and click Continue. Click Accept in the pop-up window to accept the license.</li>
         <li>At the Select a Destination page, select the drive and click Continue. </li>
         <li>To customize your installation,  click the Customize button in the bottom left-hand side of the last installation wizard panel. The list of products is displayed.  </li>
         <li>Select the products you want to install and complete your installation.</li>
         <li>Enter the administrator's name and password for your system and click OK to begin the installation. </li>
         
         <li>To specify additional settings, follow   the instructions on <a href="http://dev.mysql.com/doc/refman/5.0/en/post-installation.html">http://dev.mysql.com/doc/refman/5.0/en/post-installation.html</a>. <br>
         </li>
      </ol>
      
      <p align="center"><a href="#top">top</a></p>
      <h2><a name="uninstallation">Uninstalling the Software</a></h2>
      <div>
         <h3><a name="uninstall_windows">Microsoft Windows</a></h3>
         <p>If necessary, you can uninstall the NetBeans IDE with the GlassFish and MySQL bundle using the following procedures.</p>
         
         <p><b>To uninstall the IDE</b>:</p>
         <ol>
            <li>Shut down the IDE.<br>
            </li>
            
            <li>From the Control Panel, select Add or Remove Programs, then select NetBeans IDE 6.1  and click Remove.</li>
            <li>To uninstall GlassFish/MySQL together with the IDE, on the Summary panel make sure that the correct versions are listed and check the appropriate checkboxes
            </li>
         </ol>
         
         <p><b>To uninstall the GlassFish application server: </b></p>
         <ol>
            <li>Shut down the IDE.</li>
            <li>From the Control Panel, select Add or Remove Programs, then select GlassFish V2 UR2 and click Remove.</li>
         </ol>
         <p><b>To uninstall the MySQL 5.0 Community database server: </b></p>
         
         <ol>
            <li>Shut down the IDE.</li>
            
            <li>From the Control Panel, select Add or Remove Programs, then select MySQL 5.0 Community database server, and click Remove.</li>
         </ol>
      </div>
      <div>
         <h3><a name="uninstall_sollinux">Solaris OS, Linux</a></h3>
         <p>If necessary, you can uninstall the NetBeans IDE, the GlassFish application server, and MySQL server using the following procedures.</p>
         <p><b>To uninstall the IDE</b>:</p>
         
         <ol>
            <li>Shut down the IDE.</li>
            
            <li>In the IDE installation directory, run the <tt>uninstall.sh</tt> file. </li>
            <li>To uninstall GlassFish/MySQL together with the IDE, at the   Summary page make sure that the correct versions are listed and check   the appropriate checkboxes. </li>
            <li>At the Summary page, click Uninstall. <br>
            </li>
            <li>After uninstallation completes, click Finish.</li>
            
         </ol>
         <p><b>To uninstall the GlassFish application server</b>:</p>
         <ol>
            <li>Shut down the IDE.</li>
            <li>Locate the application server installation directory.<br>
               <p><b>Note:</b> The default installation location is different depending on the type of installation and the platform. The following table shows the default application server installation directory.</p>
               
               <table>
                  <tbody>
                     <tr class="tblheader">
                        <th width="70">Platform</th>
                        <th width="101">Installing As...</th>
                        <th width="264">SOA Installation</th>
                     </tr>
                     <tr class="tbltd0">
                        
                        <td>Solaris&nbsp;OS&nbsp;<br></td>
                        <td>root</td>
                        <td><tt>/opt/glassfish-v2ur2</tt></td>
                     </tr>
                     <tr class="tbltd1">
                        
                        <td>Solaris&nbsp;OS,<br>Linux</td>
                        
                        <td valign="top">user</td>
                        <td valign="top"><tt>~/glassfish-v2ur2</tt></td>
                     </tr>
                     <tr class="tbltd0">
                        <td>Linux</td>
                        <td>root</td>
                        <td><tt>/usr/local/glassfish-v2ur2</tt></td>
                        
                     </tr>
                  </tbody>
               </table>
               
            </li>
            <li>In the application server installation directory, run the <tt>uninstall.sh</tt> file.</li>
            
            <li>At the Summary page, click Uninstall. <br>
               
            </li>
            <li>After uninstallation completes, click Finish.</li>
         </ol>
      </div>
      <div>
         
         <h3><a name="uninstall_mac" id="uninstall_mac">Mac OS X</a></h3>
         <p><b>To uninstall the IDE and application server:</b></p>
         <ol>
            <li>Shut down the software.</li>
            
            <li>Drag the program folders or files to the Trash.    <br>
            Note that the default location for the IDE and application server is <tt>/Applications/NetBeans/</tt>.  </li>
         </ol>
         <p><b>To uninstall the MySQL 5.0 Community database server:</b></p>
         <ol>
            <li>Shut down the software.</li>
            <li>Remove the following: 
               <ul>
                  
                  <li><tt>/usr/local/mysql-VERSION</tt></li>
                  <li>the <tt>/usr/local/mysql</tt> symbolic link</li>
                  <li>/Library/StartupItems/MySQLCOM</li>
                  <li>Package Receipt directories in <tt>/Library/Receipts/mysql.pkg</tt> and <tt>/Library/Receipts/mysqlstartup.pkg</tt></li>	
               </ul>
               
            </li>
         </ol>
         Find more information on uninstalling MySQL 5.0 Community server in <tt>README</tt> file in <tt>/usr/local/mysql</tt>.
      </div>
      <p align="center"><a href="#top">top</a></p>
      <h2><a name="upgrading"></a>Upgrading and Coexisting with Previous Versions</h2>
      <p>NetBeans IDE 5.5 or 5.5.1, or 6.0 can coexist with NetBeans IDE 6.1 on the same system. 
      You do not have to uninstall the 5.5 or 5.5.1, 6.0 versions in order to install or run NetBeans IDE 6.1. </p>
      
      <p>If you have NetBeans IDE 5.5, 5.5.1, or 6.0, during the first run of NetBeans IDE 6.1, 
      you will be able to choose whether to import user settings from the previous user directory.</p>
      <p align="center"><a href="#top">top</a></p>
      <h2><a name="troubleshooting" id="troubleshooting"></a>Troubleshooting</h2>
      <div>
         <h3>About the Installer Working Directory</h3>
         <p>The installer stores data about installation sessions in the installer working directory. Examples of this data are the list of components installed on your system, installation log messages, and registry data. </p>
         
         <p>The default location for the installer working directory is <tt>%USERPROFILE%\.nbi</tt> on Windows and <tt>~/.nbi</tt> on other platforms. The log subdirectory contains the installation log files. </p>
         
      </div>
      <div>
         <h3>Cleaning Up After Incomplete Installations</h3>
         <p>After incomplete or unsuccessful installations, you might need to clean up your system from previous installations. </p>
         <p><b>For Microsoft Windows, Solaris OS, and Linux:</b></p>
         <ol>
            
            <li>Delete the installer working directory.</li>
            <li>Delete the installation directories of the IDE and the GlassFish application server.</li>
            <li>On the Windows platform, delete all <tt>nbi*</tt> registry entries from the following registry keys: <br>
               
               <tt>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</tt> <br>
            <tt>HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</tt> </li>
            
         </ol>
         <p><b>For Mac OS X:</b></p>
         <ul>
            <li>Drag the program folders or  files to the Trash. </li>
         </ul>
         
      </div>
      <div>
         <h3>Disabling Some Software Before Installation</h3>
         <p>It is better to disable firewall, antivirus, and monitoring applications before you start installation. Some of these applications can prevent IDE components from being configured correctly during the installation process. </p>
         <p>For example, if you have the Logitech Process Monitor application (<tt>LVPrcSrv.exe</tt>) running on your system, switch it off before installation. </p>
         
      </div>
      <p align="center"><a href="#top">top</a></p>
      <h2><a name="moreinformation"></a>More Information</h2>
      <br>
      
      <ul>
         <li><a href="../../../downloads/index.html">NetBeans IDE 6.1  Download page</a><a href="./relnotes.html"><br>
         </a></li>
      </ul>
      <hr class="light">
      <br>
      
      <div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&subject=Feedback: NetBeans IDE 6.0 Installation Instructions">Send Us Your Feedback</a></div>
      <br style="clear:both;">
      <p align="center"><a href="#top">top</a></p>
   </body>
</html>
