<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
  Copyright 2009 Sun Microsystems, Inc. 
  All Rights Reserved.
-->

<html>
<head>
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<link rel="stylesheet" type="text/css" media="print" href="../../../print.css">
<link rel="shortcut icon" href="https://netbeans.org/favicon.ico" type="image/x-icon" >
<title>NetBeans IDE 6.8 Installation Instructions</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<meta name="description" content="Installation instructions for  NetBeans IDE 6.8">
<meta name="keywords" content="NetBeans, IDE, free, open source, install notes, developer, installer, NetBeans, NetBeans IDE, NetBeans installer, NetBeans development environment" >
<style type="text/css">
<!--
.style2 {color: #000000}
-->
</style>
</head>
<body>
<a name="top"></a>
<h1>NetBeans IDE 6.8 Installation Instructions</h1>
<div class="articledate" style="margin-left: 0px;">Last updated: <!-- #BeginDate format:Am1 -->December 10, 2009<!-- #EndDate --> </div>
<p>This document describes how to install NetBeans IDE 6.8 on your system. Please see the NetBeans IDE 6.8 Release Notes for information about <a href="relnotes.html#system_requirements">supported operating systems and hardware configurations</a> for the IDE. To learn about the new features included in this release of the IDE see the <a href="index.html">NetBeans IDE 6.8 Release Information</a> page.</p>

<h2>Contents</h2>
<ul>
<li><a href="#requiredsoftware" title="Required Software">Required Software</a></li>
<li><a href="#downloadoptions" title="Installer Download Options">Installer Download Options</a></li>
<li><a href="#customizeinstall" title="Customizing Your Installation">Customizing Your Installation</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>
<li><a href="#install_zip">Platform-Independent Package</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 IDE, the <span class="style2">Java SE Development Kit (JDK) 5.0 Update 19 (version 1.5.0_19) or JDK 6 Update 14</span> or newer must be installed on your system. If you do not have an installation of JDK, you cannot proceed with the installation. You can download the latest JDK version at <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">http://java.sun.com/javase/downloads</a>.
<p>For the PHP, Ruby, and C/C++ download options, you can install the JRE instead of the JDK. However, if you are planning to use any of the Java features, you will need the JDK. </p>
<p align="center"><a href="#top">top</a></p>
<h2><a name="downloadoptions" id="downloadoptions"></a>Installer Download Options</h2>
<p>On the NetBeans IDE <a href="https://netbeans.org/downloads/6.8/index.html" target="_blank">Download page</a>, you can obtain one of several installers, each of which contains the base IDE and additional tools.  </p>
<p>The following installers are available: </p>
<ul>
<li><b>Java</b>. Provides tools for developing Java SE, Java EE and Java ME applications. This download option also includes GlassFish v3, and Apache Tomcat 6.0.20 software. </li>
<li><b>JavaFX</b>. Provides support for JavaFX multi-platform rich application development.</li>
<li><b>Java SE</b>. Supports all standard Java SE development features as well as support for NetBeans RCP development platform.</li>
<li><b>Ruby</b>. Provides tools for Ruby development and supports Rails and JRuby. Also contains GlassFish v3.</li>
<li><b>PHP</b>. Provides tools for PHP development.</li>
<li><b>C/C++</b>. Supports development in the C, C++, Qt, Fortran and Assembly languages. </li>

<li><b>All. </b> This is a full download option, which contains all the runtimes and packs available for the NetBeans IDE.  </li>
</ul>
<p align="center"><a href="#top">top</a></p>
<h2><a name="customizeinstall"></a>Customizing Your Installation</h2>
<p>If you download Java or &quot;All&quot; download options, you can choose exactly what tools and runtimes to install. Click Customize at the Welcome page of the installer and select the features that you want to use. For more information, see <a href="#installation" title="Installing the Software">Installing the Software</a>.</p>
<p>If you want to add functionality to your NetBeans IDE configuration, use the NetBeans Plugin Manager. For example, assume that you start out by downloading and installing the Ruby pack. You then decide that you want to try out the C/C++ functionality. To do this, go to the NetBeans Plugin Manager from the IDE (choose Tools &gt; Plugins) and add the C/C++ pack to your existing installation.</p>
<p>There are several important notes about installation and configuration of some NetBeans IDE features: </p>
<ol>
  <li>Apache Tomcat 6.0.20 is included in the &quot;Java&quot; and &quot;All&quot; download options but it is not installed by default from either of these options. To install Apache Tomcat from the Java or &quot;All&quot; download, launch the installer and select Apache Tomcat 6.0.20 in the Customize Installation dialog box.</li>

  <li>For C/C++ development (applicable for the C/C++ and &quot;All&quot; downloads), you need to additionally install compilers and tools. For more information, refer to the <a
  href="cpp-setup-instructions.html">Configuring the NetBeans IDE for C/C++/Fortran</a>. </li>
  <li>For Mac OS X, you can customize the NetBeans IDE installation from Java, Ruby, and &quot;All&quot; downloads. The IDE installation from JavaSE, PHP, and C/C++ downloads cannot be customized. </li>
  <li><span class="style2">You can also download <a href="#install_zip">a platform-independent zip file</a> and run the NetBeans IDE executable file. </span>Note that the runtimes, such as the GlassFish application servers and Apache Tomcat, are available only with platform-specific installers. </li>
</ol>
<p align="center"><a href="#top">top</a></p>
<h2><a name="startdownload" id="startdownload"></a>Starting the Download</h2>

<ol>
<li>Go to the NetBeans IDE <a href="https://netbeans.org/downloads/6.8/index.html" target="_blank">Download page</a>.</li>
<li>In the upper right area of the page, select the language and platform from the drop-down list. 
  You can also choose to download and use the platform-independent zip file. </li>
<li>Click the Download button for the download option that you want to install.</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 IDE on your system. These installation instructions apply to all supported platforms. For the list of supported platforms, see the <a href="relnotes.html">release notes</a>. </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. 
   <ul>
    <li>For Windows, the installer executable file has the <tt>.exe</tt> extension. Double-click the installer file to run it. </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>chmod +x &lt;<i>installer-file-name</i>&gt;</tt></li>
   </ul>
  </li>
    <li>To choose the tools and runtimes to install, perform the following steps at the Welcome page of the installation wizard:
      <ol type="a">
         <li>Click Customize.</li>
         <li>In the Customize Installation dialog box, make your selections.</li>
         <li>Click OK.</li>
       </ol>
    </li>
     <li>At the Welcome page of the installation wizard, click Next.</li>
     <li>At the License agreement page, review the license agreement, click the acceptance checkbox, and click Next.</li>
     <li>At the NetBeans IDE installation page, do the following:
       <ol type="a">
      <li>Accept the default installation directory for the NetBeans IDE or specify another directory.
         <p><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.</p></li>
      <li>Accept the default JDK installation to use with the NetBeans IDE or select a different installation from the drop-down list.
          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 and click Next, or cancel the current installation. 
          After installing the required JDK version you can restart the installation.</li>
        </ol>
   <li>If the GlassFish v3 installation page opens, accept the default installation directory or specify another installation location.</li>
   <li>If you are installing Apache Tomcat, on its installation page, accept the default installation directory or specify another installation location. </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>
  </ol>

<p class="notes"><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>
<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 panels 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>If you downloaded the All, Java, or Ruby bundle, you can customize your installation. On the last installation wizard panel, press the Customize button in the bottom left-hand side of the panel. The tree of products is displayed.  </li>
  <li>Select the products you want to install.</li>
  <li>Enter the administrator's name and password for your system and click OK to begin the installation.</li>
</ol>

<h3><a name="install_zip" id="install_zip">Platform-Independent Package </a></h3>
<p><b>To run the software:</b></p>
<ol>
  <li>After the download of the platform-independent ZIP file completes, extract it to any folder on your system. </li>
  <li>Run the executable file located in the <tt>netbeans/bin</tt> directory. </li>
  <li>Accept the License Agreement. 
  The NetBeans IDE starts.  </li>
</ol>
<p><span class="notes"><b>Note:</b> Note that the runtimes, such as the GlassFish application server and Apache Tomcat, are available only with platform-specific installers.</span></p>
<p><span class="notes"><b>Note:</b> If the compatible JDK installation cannot be found, you might need to manually add the path to the JDK installation directory:</span></p>
<ol>
  <li>Open the <tt>netbeans.conf</tt> file located at <tt>netbeans/etc</tt> in a text editor.</li>
  <li>Enter the location of the compatible JDK installation as the value of the <tt>netbeans_jdkhome</tt> option.</li>
  <li>Save the <tt>netbeans.conf</tt> file and run the  executable file at <tt>netbeans/bin</tt>.</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, the GlassFish v3, and Apache Tomcat using the following procedures.</p>
<p><b>To uninstall the IDE</b>:</p>
<ol>
  <li>Shut down the IDE.
  </li>
  <li>From the Control Panel, select Add or Remove Programs, then select NetBeans IDE 6.8 and click Remove.</li>
</ol>
<p><b>To uninstall the GlassFish v3: </b></p>
<ol>
  <li>Shut down the IDE.</li>
  <li>From the Control Panel, select Add or Remove Programs, then select GlassFish v3 and click Remove.</li>
</ol>
<p><b>To uninstall Apache Tomcat: </b></p>

<ol>
  <li>Shut down the IDE.</li>
  <li>From the Control Panel, select Add or Remove Programs, then select Apache Tomcat 6.0.20 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 v3 , and Apache Tomcat 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/Tomcat 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. 
  </li>
  <li>After uninstallation completes, click Finish.</li>
</ol>
<p><b>To uninstall GlassFish v3 </b>:</p>
<ol>
  <li>Shut down the IDE.</li>
  <li>Locate the application server installation directory.
  <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 for various platforms.</p>

  <table>
    <tbody>
        <tr class="tblheader">
            <th width="70">Platform</th>
            <th width="101">Installing As...</th>
			<th width="264">GlassFish v3 Installation</th>
        </tr>
        <tr class="tbltd0">
          <td>Windows</td>
          <td>user with admin rights</td>
          <td><tt>%ProgramFiles%\glassfish-v3</tt></td>
        </tr>
        <tr class="tbltd0">
          <td>Windows</td>
          <td>user</td>
          <td><tt>%USERPROFILE%\glassfish-v3</tt></td>
        </tr>
        <tr class="tbltd0">
            <td>Solaris&nbsp;OS&nbsp;</td>
            <td>root</td>
			 <td><tt>/opt/glassfish-v3</tt></td>
        </tr>
        <tr class="tbltd1">

            <td>Solaris&nbsp;OS,Linux</td>
            <td valign="top">user</td>
			<td valign="top"><tt>~/glassfish-v3</tt></td>
        </tr>
        <tr class="tbltd0">
            <td>Linux</td>
            <td>root</td>
			<td><tt>/usr/local/glassfish-v3</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.
  </li>
  <li>After uninstallation completes, click Finish.</li>
</ol>
<p><b>To uninstall Apache Tomcat: </b></p>
<ol>
  <li>Shut down the IDE.</li>

  <li>Locate the Apache Tomcat installation directory and run the <tt>uninstall.sh</tt> file. 
  </li>
  <li>At the Summary page, click Uninstall. </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.    
  Note that the default location for the IDE and application server is <tt>/Applications/NetBeans/</tt>.  </li>
</ol>
</div>
<div>

<h3><a name="uninstall_zip" id="uninstall_zip">Platform-Independent Package</a></h3>
<p>To uninstall the IDE files, follow the steps described in the <a href="#clean">Cleaning Up After Incomplete Installations</a> section of this document. </p>
</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.x, 6.0, 6.1, 6.5 and 6.7 can coexist with NetBeans IDE 6.8 on the same system. You do not have to uninstall the previous versions in order to install or run NetBeans IDE 6.8. </p>
<p>If you have NetBeans IDE 5.x, 6.0, 6.1, 6.5 or 6.7 installed you will be able to choose whether or not to import the user settings from the existing user directory when you run NetBeans IDE 6.8 for the first time.</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><a name="clean"></a>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: 
    <tt>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</tt> 
    <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>

<ul>
<li><a href="index.html">NetBeans IDE 6.8 Release Information</a></li>
<li><a href="relnotes.html">NetBeans IDE 6.8 Release Notes</a></li>
<li><a href="http://download.netbeans.org/netbeans/6.8/">NetBeans IDE Download page</a></li>
<li><a href="http://wiki.netbeans.org/NetBeansUserFAQ#Installation" target="_blank">NetBeans IDE Installation FAQ</a></li>
</ul>
<hr class="light">
<div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&subject=Feedback: NetBeans IDE 6.8 Installation Instructions">Send Us Your Feedback</a></div>
<br style="clear:both;">
<p align="center"><a href="#top">top</a></p>
</body>
</html>
