<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>NetBeans IDE 4.1 Release Notes and System Requirements</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>

<h1>NetBeans<sup class="tmtext">TM</sup> IDE 4.1 Release    
	Notes </h1>
<p>Last Updated: 10 June 2005</p>

<h2>Contents</h2>
  <ul>
    <li><a href="#Introduction">Introduction</a> </li>
    <li><a href="#WhatsChanged">What's Changed</a></li>
	 <li><a href="#SystemRequirements">System Requirements</a>
		<!--<ul>
	    <li><a href="#req_os">Operating Systems</a></li>
	    <li><a href="#min_hw">Minimum Hardware Configuration</a> </li>
	    <li><a href="#req_hw">Recommended Hardware Configuration</a> </li>
	    <li><a href="#req_sw">Required Software</a></li>
	    <li><a href="#req_appserver">Sun Java System Application Server Requirements</a></li>
	   </ul>--></li>
    <li><a href="#Compatibility">Compatibility/Upgrading</a></li>
    <li><a href="#KnownProblems">Known Issues </a></li>
    <li><a href="#Documentation">Documentation</a></li>
    <li><a href="#MoreInfo">More Information</a></li>
  </ul>

<a name="Introduction"><h2>Introduction</h2></a>
<blockquote> 
  <p> Welcome to NetBeans<sup class="tmtext">TM</sup> IDE 4.1. NetBeans
  	IDE is a modular, standards-based integrated development environment (IDE),
  	written in the Java<sup class="tmtext">TM</sup> programming language.
  	  The NetBeans project consists of: </p>
  <ul>
    <li>An <a href="https://netbeans.org/features/ide/index.html">open source 
      IDE</a> written in the Java programming language.</li>
    <li>An <a href="https://netbeans.org/features/platform/index.html">application 
      platform</a>, which can be used as a generic framework to build any kind 
      of application.</li>
  </ul>
  <p>If you are looking for information about installing the IDE, see the <a href="https://netbeans.org/community/releases/41/install.html">NetBeans
  		Installation Instructions</a>.
</blockquote>

<a name="WhatsChanged">
<h2>What's New </h2>
</a>
<blockquote>
  <!--<h5>New in 4.1 </h5>-->
  <p>NetBeans IDE 4.1 adds support for developing applications for the J2EE 1.4
  	Platform and their deployment to the Sun Java&#153; System Application Server
   8.1 Platform Edition. </p>
  <p>Enhancements to existing features in NetBeans  include: </p>
  <ul>
    <li>Support for projects with multiple source roots.</li>
  	 <li>Automatic generation of Debug and Compile Single File actions for projects
  	 	with existing build scripts.</li>
  	 <li>Streamlined configuration of project classpaths using the Libraries
  	 	node in the Projects window. </li>
	 <li>Simplified browsing of project classes using the Navigator window.</li>
	</ul>
	<p>For more information about new development features
  	in NetBeans IDE, see the <a href="https://netbeans.org/community/releases/41/index.html#highlights">NetBeans
  	IDE 4.1  Highlights</a>.
</blockquote>

<a name="SystemRequirements"><h2>System Requirements</h2></a>
<blockquote> 
  <a name="req_os"><h5 style="border-bottom:0">Operating Systems</h5></a>
  <p>NetBeans IDE runs on operating systems that support the Java<sup class="tmtext">TM</sup> 
  VM. Below is a list of platforms that NetBeans IDE has been tested on. 
  <ul>
    <li>Microsoft Windows XP Professional SP2</li>
    <li>Solaris operating system (SPARC<sup>&reg;</sup>  and x86 Platform Editions)
    	versions 8, 9, and 10</li>
    <li>Red Hat  Enterprise Linux 3</li>
    <li>Java Desktop System 2</li>
    <li> Mac OS X 10.3</li>
   </ul>
  <p>NetBeans IDE is also known to run on the following platforms: 
  <ul><li>Microsoft Windows 2000 Professional SP3 </li>
    <li>Various other Linux distributions</li>
    <li>Open VMS 7.2-1 or later</li>
    <li>Other UNIX<sup>&reg;</sup> platforms, such as HP-UX 
	 <p><b>Note:</b> the Sun Java System Application Server may not run on certain
	 	platforms. 
    </li>
  </ul>

  <a name="min_hw"><h5 style="border-bottom:0">Minimum Hardware Configuration</h5></a>
  <ul>
    <li><b>Solaris<sup class="tmtext">TM</sup> operating system</b>: 
      <ul>
        <li><b>Processor</b>: 450 MHz Ultra<sup class="tmtext">TM</sup> 10 workstation 
          or equivalent</li>
        <li><b>Memory</b>: 384 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
    </li>
    <br>
    <li><b>Microsoft Windows operating systems</b>: 
      <ul>
        <li><b>Processor</b>: 500 MHz Intel Pentium III workstation or equivalent</li>
        <li><b>Memory</b>: 384 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
    </li>
    <br>
    <li><b>Linux operating system</b>: 
      <ul>
        <li><b>Processor</b>: 500 MHz Intel Pentium III workstation or equivalent</li>
        <li><b>Memory</b>: 384 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
	 </li>
    <br>
    <li><b>Macintosh OS X operating system</b>: 
      <ul>
        <li><b>Processor</b>: PowerPC G4</li>
        <li><b>Memory</b>: 512 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space
        </ul>
    </li>
  </ul>

  <a name="req_hw"><h5 style="border-bottom:0">Recommended Hardware Configuration</h5></a>
  <ul>
    <li><b>Solaris<sup class="tmtext">TM</sup> operating system</b>: 
      <ul>
        <li><b>Processor</b>: 500 MHz Ultra<sup class="tmtext">TM</sup> 60 workstation 
          or equivalent</li>
        <li><b>Memory</b>: 512 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
    </li>
    <br>
    <li><b>Microsoft Windows operating systems</b>: 
      <ul>
        <li><b>Processor</b>: 780 MHz Intel Pentium III workstation or equivalent</li>
        <li><b>Memory</b>: 512 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
    </li>
    <br>
    <li><b>Linux operating system</b>: 
      <ul>
        <li><b>Processor</b>: 800 MHz Intel Pentium III workstation or equivalent</li>
        <li><b>Memory</b>: 512 megabytes</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space 
      </ul>
    </li>
    <br>
    <li><b>Macintosh OS X  operating system</b>: 
      <ul>
        <li><b>Processor</b>: PowerPC G5</li>
        <li><b>Memory</b>: 1 gigabyte</li>
        <li><b>Disk space</b>: 125 megabytes of free disk space
        </ul>
    </li>
  </ul>
	  
  <a name="req_sw">
  <h5 style="border-bottom:0">Required Software</h5>
  </a>
  <p>NetBeans IDE runs on the J2SE JDK 5.0 (Java<sup class="tmtext">TM</sup> 2 
    JDK, Standard Edition), which consists of the Java Runtime Environment plus 
    developer tools for compiling, debugging, and running applications written 
    in the Java<sup class="tmtext">TM</sup> language. NetBeans IDE 4.1 also runs 
    on J2SE SDK version 1.4.2, but it has only been tested on JDK 5.0. </p>
  <p><b>Note</b>: If you wish to run the IDE on earlier versions of the SDK or 
    if you prefer to install the IDE manually, you can download archived versions 
    of the IDE at <a href="http://java.sun.com/products/archive/index.html">http://java.sun.com/products/archive/index.html</a>. 
  </p>
  <p>You can download the JDK for your platform from one of the sites listed
  	below: 
  <ul>
    <li><b>Solaris</b>: <a href="http://java.sun.com/j2se/1.5.0/">http://java.sun.com/j2se/1.5.0/</a></li>
    <li><b>Windows</b>: <a href="http://java.sun.com/j2se/1.5.0/">http://java.sun.com/j2se/1.5.0/</a></li>
    <li><b>Linux</b>: <a href="http://java.sun.com/j2se/1.5.0/">http://java.sun.com/j2se/1.5.0/</a></li>
    <li><b>Mac OS X</b>: <a href="http://www.apple.com/support/downloads/javaupdate142.html">http://www.apple.com/support/downloads/javaupdate142.html</a> 
      (Mac OS X 10.3.4 or later). Mac OS upgrades are also available via Apple's 
      Software Update mechanism. 
    <li><b>Open VMS</b>: <a href="http://h18012.www1.hp.com/java/download/index.html">http://h18012.www1.hp.com/java/download/index.html</a></li>
    <li><b>OS/2</b>: http://www.goldencode.com/company/software/j2se/index.html 
      or http://www.innotek.de/products/javaos2/javaos2general_e.html. 
      <br>
      If you get a NullPointerException when starting the IDE on OS/2, try changing 
      the name of your <code>JAVA_HOME/jre</code> directory to all capital letters. 
    </li>
    <!--More information about using NetBeans IDE on Mac
      OS X is available at <a href="https://netbeans.org/kb/articles/mac.html">https://netbeans.org/kb/articles/mac.html</a></li>-->
  </ul>
  <a name="req_appserver"><h5 style="border-bottom:0">Sun Java System Application Server Requirements</h5></a>
  <p>In order to use the J2EE development features of NetBeans IDE 4.1, you must
  	have the Sun Java System Application Server Platform Edition 8 2005Q1 installed
  	on your computer. You can download it<a href="http://java.sun.com/j2ee/1.4/download.html#sdk"> here</a>.</p>
  <p><b>Note</b>: Because you also need the Sun Java System Application Server
  	PE 8 2005Q1 to work with the J2EE features of NetBeans IDE 4.1, your computer
  	must also meet the <a href="http://docs.sun.com/source/819-0072/relnotesPE.html">application
  	server's minimum requirements</a>. </p>
</blockquote>
<br>
<a name="Compatibility"><h2>Compatibility/Upgrading</h2></a>
<blockquote> When you first run the IDE, you can import a subset of the settings 
  you used in NetBeans IDE 4.0. If you choose not to import settings from a previous 
  release, the IDE opens using the default settings. Project-specific settings 
  are not importable from version 3.6. 
  <blockquote><b>Note:</b><i> The IDE only recognizes previous installations where 
    the user directory resides in the default location. It does not recognize 
    installations where you have specified a user directory using the <code>--userdir</code> 
    switch. If you would like to import settings from an IDE that the installer 
    does not recognize, download an archive version of the IDE instead of the 
    installer. </i> </blockquote>
  <p> Though it is possible to import settings from a previous IDE installation
    into NetBeans IDE 4.1, it is not possible to import settings
  	from NetBeans IDE 4.1  into an earlier IDE release. </p>
</blockquote>

<a name="KnownProblems"><h2>Known Issues </h2></a>
	<br/>
	<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>
  <p>The  unresolved issues for this release are as follows: </p>
  <ul>
    <li> 
<h3>General Issues</h3>
      <blockquote> 
		  <p><b>Description:</b></p>
        <p>If you edit the Project Properties for a project that was created
        	in NetBeans IDE 4.0 in NetBeans IDE 4.1, the project will no longer
        	work in NetBeans IDE 4.0. </p>
        <!--<p><b>Description:</b></p>
        <p>PVCS   does not work when using Solaris 9 or Solaris 10. However,
        	PVCS 7.5.1 has been successfully tested with NetBeans 4.1 on both SPARC
        	and x86 versions of Solaris 8. </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>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32463">Issue #32463
	 		(Macintosh OS X only) </a>
	 	<blockquote> 
        <p><b>Description:</b></p>
        <p>Right-click mouse behavior not  emulated  on multiple files.</p>
        <p><b>Workaround:</b></p>
	     <p> Press and hold Control while selecting multiple files one at a
	     	time. Note that the contextual menu will appear after each mouse click
	     	and may obstruct subsequent selections. 
	 	</blockquote>
		
	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=39449">Issue #39449
	 		(Macintosh OS X only) </a>
	 	<blockquote> 
        <p><b>Description:</b></p>
        <p>Main menu  appears in NetBeans window rather than standard
		Mac OS X location.</p>
        <p><b>Workaround:</b></p>
	     <p>There is no workaround for this problem.
	 	</blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=45652">Issue #45652</a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Unable to add a folder to Favorites  using the Add to Favorites dialog
        	on Linux with GTK L&amp;F. 
        <p><b>Workaround:</b></p>
        <p>If this happens, enter the folder name manually in the Add to Favorites
        	dialog File Name field and then press Add.
      </blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=47645">Issue #47645</a> <!--todo : update workaround?-->
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Cannot run a target with <java> a task that has <tt>failonerror=true</tt> from
        	within the IDE even though the same script runs outside of the IDE without
        	problems.         
        <p><b>Workaround:</b></p>
        <p>If this occurs, it is recommended that you run the script from the
        	command line. Alternately, you may rewrite the script.
        	<!--todo : add phrase clarifying what user would change when rewriting script-->
		</blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=51880">Issue #51880</a> <!--todo : update workaround?-->
      <blockquote>
        <p><b>Description:</b></p>
        <p>JSPs in free-form projects unable to be debugged when attaching the
        	debugger to a process.         
        <p><b>Workaround:</b></p>
	     <p>Use an ant debug target as described in <a href="https://netbeans.org/kb/archive/index.html"> Writing
	     		A Debug Target for a Free-Form Web Project</a> instead.
      </blockquote>

	 <!--<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52835">Issue #52835</a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Bundled Ant does not include Xerces in classpath; can affect JDK 1.4
        	users.
        <p><b>Workaround:</b></p>
	     <p>If you  need Xerces or the  XML-Commons APIs in your classpath, download
	     	it separately and add it. You can download it <a href="http://xml.apache.org/">here</a>. 
      </blockquote>-->

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52856">Issue #52856</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 4.1
        	IDE and Sun Java System Application Server Platform Edition 8 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>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=54965">Issue #54965</a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>When the WSDL operation qualifies for wrapper style and the output
        	part's element has more than one sub element, the output element does
        	not unwrap. This causes a conflict with JSR-109.
        	<!--<p>The error that I recieved in the Output window:<br>
        	Deployment Error -- Error while running ejbc -- Fatal Error from EJB
        		Compiler -- jaxrpc compilation exception</p>-->
        <p><b>Workaround:</b></p>
	     <p> If this occurs,  right-click the project node, choose Properties, select
	     	the Web Service Clients panel,  select &quot;donotunwrap&quot; and
	     	deselect &quot;strict&quot;.        	     </blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=56910">Issue #56910</a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Sun Java System Application Server is restarted in some cases after
        	 deployment. This occurs when a module that is deployed to the application
        	server has errors  in its sources, such as when a remote method
        	does not throw a RemoteException. 
        <p><b>Workaround:</b></p>
	     <p> If this occurs,  run the integrated
	     	J2EE verifier to  obtain information about why the archive can not be
	     	loaded and then edit the source file to correct any errors.
      </blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=57282">Issue #57282
	 		(Linux only) </a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Sun Java System Application Server is not installed on 64bit JDK on
        	Linux/AMD64. The
        	Application Server installer  but does
        	not run on 64bit JDK and therefore the Application Server
        		cannot be installed using a 64bit JDK. This does not mean, however,
        	that the Application Server itself will not RUN on 64bit JDK.</p>
        <p><b>Workaround:</b></p>
	     <p> If this occurs, run the Application Server bundle installer on a 32bit
	     	JDK. After installation you should be able to run both the IDE and 
	     	Application Server on a 64bit JDK. 
      </blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58221">Issue #58221</a> 
      <blockquote> 
        <p><b>Description:</b></p>
        <p>Javadoc generation fails  for projects created in NetBeans
        		4.0 when opened in NetBeans 4.1.</p>
        <p><b>Workaround:</b></p>
	     <p> If this occurs,  manually add the property <code>javadoc.additionalparam=</code> to
	     	the project.properties file using a text  editor.
      </blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58230">Issue #58230</a> 
	 	<blockquote> 
        <p><b>Description:</b></p>
        <p> Web projects
        	created in NetBeans 4.0 unable to use JUnit test
        	packages when opened in NetBeans 4.1. </p>
        <p><b>Workaround:</b></p>
	     <p>
   Create a   new project using the Web  Application with Existing Sources wizard
   	instead of opening the existing 4.0 web project directly in NetBeans 4.1.
   	Alternately, if you wish to preserve your original 4.0 web application's
   	project settings, you can resolve the broken references by adding the necessary
   	values to the new project's <code>project.properties</code> file
   		as follows:
        	  <p><code>build.test.classes.dir=${build.dir}/test/classes
   build.test.results.dir=${build.dir}/test/results
   debug.test.classpath=${run.test.classpath}
   javac.test.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}:\
     ${libs.junit.classpath}
   run.test.classpath=\
     ${javac.test.classpath}:\
     ${build.test.classes.dir} </code>	
		</blockquote>
	  
	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58231">Issue #58231</a>
	 	<blockquote> 
        <p><b>Description:</b></p>
        <p>Unable to add  web projects
        		created in NetBeans 4.0 to J2EE Enterprise applications  
     		   in NetBeans 4.1. </p>
        <p><b>Workaround:</b></p>
	     <p>Create a   new project using the Web  Application with Existing Sources
	     	wizard instead of opening the existing 4.0 web project directly in NetBeans
	     	4.1. Alternately, if you wish to preserve your original 4.0 web application's
   	project settings, you can resolve the broken references by adding
	     	the necessary values to the new project's <code>project.properties</code> file
	     	as follows:
	     <p><code>build.ear.classes.dir=${build.ear.web.dir}/WEB-INF/classes
   build.ear.web.dir=${build.dir}/ear-module
   war.ear.name=YOUR_WAR_FILE_NAME.war</code>
	 	</blockquote>

	 <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58498">Issue #58498</a>
	 	<blockquote> 
        <p><b>Description:</b></p>
        <p>Free-form web project JSP file nodes  are sometimes not visible in
        	the Projects window, Files window, and Favorites window. The causes
        	for this vary.</p>
        <p><b>Workaround:</b></p>
	     <p>Right-click the web free-form project, choose Properties, and click
	     	OK on the Web Sources Classpath page.  Then restart the IDE.             
	 	</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 Platform Edition 8  installation
        	fails on Mac OS X when using the NetBeans 4.1 IDE and Application Server
        	  bundle installer on JDK 1.5.
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.  Note that you can still develop for JDK
	     	1.5 even though the IDE itself is running on 1.4.2.
	     	<!--You can do this by changing
        	the JDK the IDE runs on and then
	     	registering the JDK 1.5 platform using the Platform Manager (Tools &gt; Platform
	     	Manager).-->
         </blockquote>
	   <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58848">Issue
			 		#57697 (Windows only) </a> 
            <blockquote> 
        <p><b>Description:</b></p>
        <p>Sun Java System Application Server installation
        		fails because the bundle installer cannot find the JDK. 
        <p><b>Workaround:</b></p>
	     <p> If this happens, start the
        	console application (cmd.exe), navigate to the directory where the installer
	     	is located, and type the installer name plus the <code>-is:javahome &lt;JAVA
        	HOME DIR&gt; switch</code>. Create  a new 
        	directory within which to install the software and ensure that the directory
        	is empty and writable. If necessary, you can also use the <code>-is:log &lt;log
        	file&gt;</code> parameter
        	to generate an installer log.
	     <p><b>Notes:</b>           
	     <ul>
         	<li> If a   previous
         		uninstallation attempt of the Application Server was not successful,
         		delete the <code>&lt;SYSTEMDIR&gt;/productregistry</code>
         		file.
         	<li>If
         		one of the values specified in the silent installer statefile
         		is invalid (i.e. it has a null value,  zero length value, or its
         		port is in use), add the appropriate values to  the
         		statefile.     	
     	      <li>See <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52856">Issue
     	      		#52856</a> 
 above for additional information.             
	     </ul>
     	   </blockquote>


   </ul>
</blockquote>

<a name="Documentation">
<h2>Documentation</h2>
</a> 
<blockquote> 
  <p>The built-in help system for NetBeans IDE 4.1 has not been completely updated 
    to cover the J2EE development features. For information about the J2EE development 
    features, see the following documents: </p>
  <p>NetBeans IDE 4.1 Quick Start Guides: </p>
  <ul>
    <li><a href="../../../kb/archive/index.html">For Web Applications</a> 
    <li><a href="../../../kb/archive/index.html">For Web Services</a> 
    <li><a href="../../../kb/archive/index.html">For J2EE Applications</a> 
  </ul>
  NetBeans IDE 4.1 Import Guides: 
  <ul>
    <li><a href="../../../kb/archive/index.html">For Web Applications</a> 
    <li><a href="../../../kb/archive/index.html">For J2EE Applications</a> 
  </ul>
  Complete list of NetBeans 4.1 Documentation: 
  <ul>
    <li><a href="../../../kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a></li>
  </ul>
  <div class='greybox'>
  	<p><b>Note: </b>If you are using the NetBeans IDE on Mac OS X, see <a href="../../../kb/articles/mac.html"> Using
  			NetBeans on Mac OS X</a> for more information about keyboard equivalents,
  			 tips and tricks, and other Mac-specific topics. </p>
  </div>
</blockquote>

<a name="MoreInfo"><h2>More Information</h2></a> 
<blockquote>
  <p>You can find news, articles, additional modules, and other useful
    information on the NetBeans project web site.
    Since NetBeans is an open-source project, the web site also provides access
    to source code, a bug database, information on creating your own NetBeans
    modules, and much more. </p>
  <p>For more information, visit <a href="https://netbeans.org/">https://netbeans.org/</a>. </p>
  <p>You can keep up to date on NetBeans IDE and interact with the NetBeans community
    by signing up for NetBeans project mailing lists  at <a href="https://netbeans.org/community/lists/">https://netbeans.org/community/lists/</a>.
</blockquote>
</body>
</html>

