<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>NetBeans IDE 4.1 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>

<h1>NetBeans<sup><small>TM</small></sup> IDE 4.1    Installation Instructions </h1>
<p>The following instructions cover installation of  both NetBeans<sup></sup> IDE
	4.1 (standalone installer) as well as the NetBeans IDE 4.1 and Sun
	Java Application Server Platform Edition 8 2005Q1 Bundle. </p>

<p><b>Installation details for:</b></p>
<ul>
  <li><a href="#standalone">NetBeans IDE Installation (Standalone Installer)</a></li>
  <!--<ul>
	  <li><a href="#windows_standalone">Windows</a></li>
	  <li><a href="#solaris_standalone">Solaris&trade; Operating System 
    (Solaris OS)</a></li>
	  <li><a href="#linux_standalone">Linux</a></li>
	  <li><a href="#macintosh_standalone">Macintosh OS X</a></li>
  </ul>-->
  <li><a href="#bundle">NetBeans IDE and Sun Java System Application Server
	   Bundle</a><a href="#standalone"> Installation</a></li>
  <!--<ul>
	  <li><a href="#windows_bundle">Windows</a></li>
	  <li><a href="#solaris_bundle">Solaris&trade; Operating System 
	    (Solaris OS)</a></li>
	  <li><a href="#linux_bundle">Linux</a></li>
	  <li><a href="#macintosh_bundle">Macintosh OS X</a></li>
  </ul>-->
  <li><a href="#launching">Launching NetBeans 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="#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>. <br>

<a name="standalone"> <h2>NetBeans IDE  Installation (Standalone Installer) </h2>
</a> 
<p>Following are instructions for installing the standalone NetBeans IDE  
	on all supported platforms. </p>
<blockquote> 

<h2 style="color:#0E1B55"><a name="windows_standalone">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 4.1:  </b></p>
  <ol>
    <li>Once you have downloaded the installer file, double-click the installer's 
      icon to launch the installer. 
    <li>In the install wizard, respond to the License Agreement, then click Next.	
    <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><i>HOME_DIR</i>/.netbeans/4.1</tt>). 
    </li>
    <li>Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>

<h2 style="color:#0E1B55"><a name="solaris_standalone"> Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</a></h2> 
<p>On machines running Solaris&trade; operating system, the 
  binary installer is the preferred method for installing NetBeans IDE. </p>
<blockquote> 
  <p><b>To install the NetBeans IDE 4.1:  </b></p>
  <ol>
    <li>Navigate to the directory that contains the installer.</li>
    <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>
    <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>
    <li>In the install wizard, respond to the License Agreement, then click Next. 
    </li>
    <li>Specify an empty directory within which to install NetBeans IDE, then 
      click Next.</li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <p><b>Note:</b> The installer searches for installed JDKs and prompts you 
      to specify which the installer should use, but you can also specify which 
      JDK the installer 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> 
      <p></p>
    </blockquote>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>
<h2 style="color:#0E1B55"><a name="linux_standalone">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 4.1:  </b></p>
  <ol>
    <li>Navigate to the directory that contains the installer.</li>
    <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>
    <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>
    <li>In the install wizard, respond to the License Agreement, then click Next. 
    </li>
    <li>Specify an empty directory within which to install NetBeans IDE, then 
      click Next.</li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <p><b>Note:</b> The installer searches for installed JDKs and prompts you 
      to specify which the installer should use. You can also specify which JDK 
      the installer 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>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>

<h2 style="color:#0E1B55"><a name="macintosh_standalone">Macintosh OS X</a> </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 4.1:  </b></p>
  <ol>
    <li>Download the tarball to the desired location on your system. 
    <li>Double-click the file to unpack the contents on your system. 
  </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>

<a name="bundle"> <h2>NetBeans IDE and Sun Java System Application Server
	  Bundle Installation</h2>
</a> 
<p>Following are instructions for installing the NetBeans IDE 
	and Sun Java System Application Server bundle on all supported platforms.	</p>
<blockquote> 
<h2 style="color:#0E1B55"><a name="windows_bundle"> 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 4.1  and Sun Java System Application Server
	 Platform Edition 8  bundle: </b></p>
  <ol>
    <li>Once you have downloaded the installer file, double-click the installer's 
      icon to launch the installer. 
    <li>In the install wizard, respond to the License Agreement, then click Next.	
    <li>Specify an empty directory within which to install the bundled software, 
      then click Next. The installation directory must not contain spaces in it's 
      name. 
      <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><i>HOME_DIR</i>/.netbeans/4.1</tt>). 
    </li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>
 
<h2 style="color:#0E1B55"><a name="solaris_bundle">Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</a></h2>
<p>On machines running Solaris&trade; operating system, the 
  binary installer is the preferred method for installing NetBeans IDE. </p>
<blockquote> 
  <p><b>To install the NetBeans IDE 4.1  and Sun Java System Application Server
	 Platform Edition 8  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>
    <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>
    <li>In the install wizard, respond to the License Agreement, then click Next. 
    </li>
    <li>Specify an empty directory within which to install the bundled software, 
      then click Next. The installation directory must not contain spaces in it's 
      name.</li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>

<h2 style="color:#0E1B55"><a name="linux_bundle">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 4.1  and Sun Java System Application Server
	 Platform Edition 8  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>
    <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>
    <li>In the install wizard, respond to the License Agreement, then click Next. 
    </li>
    <li>Specify an empty directory within which to install the bundled software, 
      then click Next. The installation directory must not contain spaces in it's 
      name.</li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>
<h2 style="color:#0E1B55"><a name="macintosh_bundle">Macintosh OS X</a></h2>
<p>On Mac 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 4.1  and Sun Java System Application Server
	 Platform Edition 8  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>-->
    <li>Launch the installer by double-clicking the bundle installer jar  
      file. </li>
    <li>On the install wizard's initial panel, click Next to continue. </li>
    <li>In the install wizard, respond to the License Agreement, then click Next. 
    </li>
    <li>Specify an empty directory within which to install the bundled software, 
      then click Next. The installation directory must not contain spaces in it's 
      name.</li>
    <li> Choose the JDK you want the software to use from the list of suitable 
      choices in the list, then click Next.</li>
    <li>Verify that the installation location is correct and that you have adequate 
      space on your system for the installation.</li>
    <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>

<!--<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>-->

<a name="launching"> <h2>Launching the IDE</h2></a> 
<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"><a name="launch_windows">Windows</a></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>
    <li>From the Start menu, select NetBeans IDE 4.1&nbsp;&gt;&nbsp;NetBeans IDE.</li>
  </ul>
  
<h2 style="color:#0E1B55"><a name="launch_solaris">Solaris<sup><small>TM</small></sup> Operating System (Solaris OS)</a></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>Execute the launcher script by typing <tt>./netbeans</tt>. 
  </ol>
<h2 style="color:#0E1B55"><a name="launch_linux">Linux</a></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>Execute the launcher script by typing <tt>./netbeans</tt>. 
  </ol>
<h2 style="color:#0E1B55"><a name="launch_mac">Macintosh OS X</a></h2> 
  <p><b>To start the NetBeans IDE on Mac OS X systems:</b> </p>
  <ul>
    <li>Double-click the NetBeans IDE application icon. 
  </ul>
</blockquote>
<br>

<a name="registerstart"> <h2>Registering and Starting the Application Server </h2></a> 
<p>If you used the standalone NetBeans 4.1 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>
    <li>In the Server Manager, click Add Server. </li>
    <li>In the dialog box, select Sun Java System Application Server 8 and click 
      Next.</li>
    <li>Enter a name for the server instance. This name is used to identify the 
      server in the IDE.</li>
    <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>
    <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><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>
    <li>In the Server Status dialog, click Start Server.</li>
    <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>

<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>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>
    <li>Execute the appropriate launcher for your system. </li>
  </ol>
  <p>The following launchers are included in the archive distributions: </p>
  <blockquote> 
    <p><tt>netbean.exe</tt> - Windows<br>
      <tt>nb.exe</tt> - Windows (from within a console window)<br>
      <tt></tt><tt>netbeans</tt> - UNIX, Linux <br>
      <tt>NetBeans </tt> - Mac OS X <br>
      <tt>netbeans.cmd</tt> - OS/2 </p>
    <!--<tt>netbeansopenvms.com</tt> - OpenVMS -->
  </blockquote>
  <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.4.2 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>. 
</blockquote>
<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>After installing NetBeans IDE and the App Server bundle,  user cannot log
	 in to web console. </p>
    <p><b>Workaround:</b></p>
    <p>Log into the web console as user admin with password adminadmin. </p>
   </blockquote> 
	</li>-->
   <li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26965">Issue #26965</a> 
     	 <blockquote> 
        	<p><b>Description:</b></p>
        	<p>If you have an incompatible version of <tt>sax.jar</tt> in your JDK 
          	installation, 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>
			 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58848">Issue
			 		#58848 (Macintosh OS X only) </a> 
            <blockquote> 
        <p><b>Description:</b></p>
        <p>Sun Java System Application Server  installation fails on Mac OS X
        	when using the NetBeans 4.1 IDE and Sun Java System Application Server
        	Platform Edition 8  Bundle installer.
The AppServer installer must be run on J2SE
			1.4.x SDK when using OS X.         	
        <p><b>Workaround:</b></p>
	     <p> If this happens,  select the
        	J2SE 1.4.2 SDK (the default) when the installer prompts you to designate
        	which JVM it should run on. Alternately, you can change
        	the JDK the IDE runs on and then
	     	register the JDK 1.5 platform using the Platform Manager (Tools &gt; Platform
	     	Manager). Note that you can still develop for JDK 1.5 even though the
	     	IDE itself is running on 1.4.2.
	     </blockquote>

</ul>
</body>
</html>
