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

        <a name="top"></a>
        <h1>NetBeans<sup class="tmtext">TM</sup> IDE 5.0 Release Notes </h1>
        <p>Last Updated: 8 April 2006</p>
        <br>
        <h2>Contents</h2>
        <ul>
            <li><a href="#introduction">Introduction</a> </li>
            <!--<li><a href="#whats_changed">What's Changed</a></li>-->
            <li><a href="#supported_technologies">Supported Technologies</a></li>
            <li><a href="#system_requirements">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><a href="#compatibility">Compatibility</a></li>
            <li><a href="#known_issues">Known Issues </a></li>
            <li><a href="#documentation">Documentation</a></li>
            <li><a href="#more_info">More Information</a></li>
        </ul>
        <br>
        <a name="introduction"><h2>Introduction</h2></a>
        <blockquote> 
            <p> Welcome to NetBeans<sup class="tmtext">TM</sup> IDE 5.0. 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>For information about new development features
            in NetBeans IDE, see <a href="https://netbeans.org/community/releases/50/index.html">
            What's New in NetBeans IDE 5.0.</a></p>
    
            <p>If you are looking for information about installing the IDE, see the <a href="https://netbeans.org/community/releases/50/install.html">NetBeans
            Installation Instructions</a>.
        </blockquote>
        <p align="center"><a href="#top">top</a></p><br>

        <!--<a name="whats_changed"></a>
        <h2>What's Changed </h2>
        <blockquote>
        </blockquote>
        <p align="center"><a href="#top">top</a></p><br>-->
        
        <a name="supported_technologies"></a>
        <h2>Supported Technologies</h2>
        <blockquote>
        <p>NetBeans IDE 5.0 supports the following technologies:</p>
            <ul>
                <li>Enterprise JavaBeans (EJB) 2.1</li>
                <li>Java Servlet 2.4</li>
                <li>JavaServer Pages (JSP) 2.0</li>
                <li>JavaServer Faces 1.1 (JSR-127)</li>
                <li>Struts 1.2.7</li>
                <li>Java API for XML-based Remote Procedure Calls (JAX-RPC) 1.6</li>
                <li>Java APIs for XML Registries (JAXR) 1.0</li>
                <li>Java API for XML Processing (JAXP) 1.2</li>
                <li>JavaServer Pages Standard Tag Library 1.1 Support</li>
            </ul>
        <p>NetBeans IDE 5.0 has been tested with the following application servers:</p>
            <ul>
                <li>Sun Java System Application Server PE 8.1 update 2</li>
                <li>Sun Java System Application Server PE 8.2</li>
                <li>Tomcat 5.5.9</li>
                <li>JBoss 4.0.3</li>
                <li>WebLogic 9.0</li>
            </ul>
            <br>
            <div class="greybox">
                <p><b>Note:</b> While the NetBeans IDE may work with different versions 
                of supported technologies or additional technologies not explicitly listed, 
                only those that are officially supported appear above.</p>
            </div>
        </blockquote>
        <p align="center"><a href="#top">top</a></p><br>

        <a name="system_requirements"></a>
        <h2>System Requirements</h2>
        <blockquote> 
            <!--<a name="req_os"></a>-->
            <h5 style="border-bottom:0">Supported Operating Systems</h5>
            <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 Fedora Core 3</li>
                <li>Mac OS X 10.4</li>
            </ul>
            <p>NetBeans IDE is also known to run on the following platforms: 
            <ul><li>Java Desktop System 2</li>
                <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"></a>
            <h5 style="border-bottom:0">Minimum Hardware Configuration</h5>
            <br>
            <div class="greybox">
                <p><b>Note:</b> The NetBeans IDE's minimum screen resolution is 1024x768 pixels.</p>
            </div>               
            
            <ul>
                <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>Solaris<sup class="tmtext">TM</sup> operating system (SPARC version)</b>: 
                    <ul>
                        <li><b>Processor: </b>500 MHz Ultra 60, 
                        SunBlade 150, or equivalent workstation</li>
                        <li><b>Memory: </b>512 megabytes</li>
                        <li><b>Disk space: </b>150 megabytes of free disk space 
                   </ul>
                </li>
                <br>
                <li><b>Solaris<sup class="tmtext">TM</sup> operating system (x86 version)</b>: 
                    <ul>
                        <li><b>Processor: </b>AMD Opteron 100 series Sun Ultra 20 
                        workstation or equivalent </li>
                        <li><b>Memory: </b>512 megabytes</li>
                        <li><b>Disk space: </b>150 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"></a>
            <h5 style="border-bottom:0">Recommended Hardware Configuration</h5>
            <ul>
                <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>Solaris<sup class="tmtext">TM</sup> operating system (SPARC version)</b>: 
                    <ul>
                        <li><b>Processor: </b>UltraSPARC IIIi 
                        1.5 GHz SunBlade 1500 workstation or equivalent </li>
                        <li><b>Memory: </b>1 gigabyte</li>
                        <li><b>Disk space: </b>150 megabytes of free disk space 
                   </ul>
                </li>
                <br>
                <li><b>Solaris<sup class="tmtext">TM</sup> operating system (x86 version)</b>: 
                    <ul>
                        <li><b>Processor: </b>AMD Opteron 100 series Sun Ultra 20 
                        workstation or equivalent </li>
                        <li><b>Memory: </b>1 gigabyte</li>
                        <li><b>Disk space: </b>150 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"></a>
            <h5 style="border-bottom:0">Required Software</h5>
            <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 5.0 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: </p>
            <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"></a>
            <h5 style="border-bottom:0">Sun Java System Application Server Requirements</h5>
            <p>In order to use the J2EE development features of NetBeans IDE 5.0, you must
            have the Sun Java System Application Server Platform Edition 8 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 to work with the J2EE features of NetBeans IDE 5.0, your computer
            must also meet the <a href="http://docs.sun.com/app/docs/doc/819-4707/">application
            server's minimum requirements</a>.</p>
  
            <h5 style="border-bottom:0">Other Application Server Requirements</h5>  
            <p>If you are working with other servers, confirm that your system
            meets their minimum requirements as listed below:
            <ul>
                <li><b>JBoss 4.0.x</b> CPU 400MHz, RAM 512MB , JDK 1.4 (recommended 1.4.2).
                <li><b>WebLogic 9.0</b> See <a href="http://e-docs.bea.com/platform/suppconfigs/configs90/90_over/overview.html">WebLogic Server 9.0 Supported Configurations.</a></li>
                <li><b>WebSphere 6.0</b> RAM 512MB</li>
            </ul>
        </blockquote>
        <p align="center"><a href="#top">top</a></p><br>

        <a name="compatibility"></a>
        <h2>Compatibility</h2>
        When you first run the IDE, you can import a subset of the settings 
        you used in NetBeans IDE 4.1. 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 5.0, it is not possible to import settings
        from NetBeans IDE 5.0 into an earlier IDE release. </p>
        
        <p><b>Note:</b>If you edit the Project Properties for a project that was created
        in NetBeans IDE 4.1 or earlier in NetBeans IDE 5.0, the project will no longer
        work in the earlier NetBeans IDE versions. </p>
        <br> 
        </blockquote>
        <p align="center"><a href="#top">top</a></p><br>

        <a name="known_issues"></a>
        <h2>Known Issues </h2>
        <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>
        <br>
        <p>The unresolved issues for this release are as follows: </p>       
        <blockquote>
            <ul>
    
                <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>
                        
                        <p><b>Workaround:</b></p>
                        <p>Temporarily remove <tt>jre/lib/endorsed/sax.jar</tt> from the JDK
                        directory  during IDE installation.
                    </blockquote>
                </li><br>

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

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

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=48288">Issue #48288</a> 
                <blockquote> 
                <p><b>Description:</b></p>
                <p>Fields automatically generated by the GUI Builder that exist 
                within Guarded Blocks (stored in .form files) not modified when 
                refactoring.</p>
                
                <p><b>Workaround:</b></p>
                <p>If this happens, first rename the GUI fields by right-clicking 
                the corresponding node in the Inspector and choosing Rename. Next, rename 
                the occurences outside the Guarded Blocks by right-clicking the 
                node that represents the field and choosing Refactoring > Rename.</p>
                </blockquote><br>
                
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=51880">Issue #51880
                (Windows XP) </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>
                    
                    <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.</p>
                </blockquote></li><br>

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52856">Issue #52856
                (Windows XP only) </a> 
                <blockquote> 
                    <p><b>Description:</b></p>
                    <p>Sun Java System Application Server  installation fails. Note that
                    this problem has been known to occur both when using the NetBeans IDE 5.0
                    IDE and Sun Java System Application Server Platform Edition 8.2 Bundle
                    installer as well as the stand-alone Application Server installer. 
                    This happens when a previous installation of the Application Server has failed and
                    subsequent attempts at  uninstallation were also unsuccessful (i.e. some
                    registry entries or configuration files weren't deleted). </p>
                    
                    <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><br>

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=54965">Issue #54965
                (Windows XP only) </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>
                <!--<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 and choose Properties. 
                On the Web Service Clients panel of the Project Properties dialog, 
                select &quot;donotunwrap&quot; and deselect &quot;strict&quot;.</p>
                </blockquote></li><br>

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=56885">Issue #56885</a> 
                <blockquote> 
                <p><b>Description:</b></p>
                <p>Debugger does not stop at the beginning of websvc after pressing F7</p>
                
                <p><b>Workaround:</b></p>
                <p>There is currently no known workaround for this issue.</p>
                </blockquote></li><br>
                
                <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.</p>
                    <!--This issue isn't a bug in Netbeans itself and bug CR 6254405 for 
                    App server is accepted and will be resolved in release 9.0. </p>-->
                </blockquote></li><br>

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

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=57697">Issue #57697 (Windows XP 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>
                
                <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>
                
                <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></li><br>

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=60235">Issue #60235 (Mac OSX only)</a> 
                <blockquote> 
                    <p><b>Description:</b></p>
                    <p>Editor focus occasionally lost when switching tabs in Mac OSX.</p>
                    
                    <p><b>Workaround:</b></p>
                    <p>If this happens, open any other window using the Window menu. 
                    If this does not remedy the problem, restart the IDE.</p>
                </blockquote></li><br>
           
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=63084">Issue #63084 (Linux only) </a> 
                <blockquote> 
                    <p><b>Description:</b></p>
                    <p>NetBeans freezes while debugging an application on the Weblogic9
                    server started with the Bea JDK (JRockKit). </p>
                    
                    <p><b>Workaround:</b></p>
                    <p>If you experience this behavior, start Weblogic with the Sun JDK that
                    is bundled with WebLogic. To do this, set the system property JAVA_VENDOR
                    to value <tt>Sun</tt>. Note that  the performance of the
                    server will also benefit from this adjustment. </p>
                </blockquote></li><br>
                      
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=64771">Issue #64771 (Linux only) </a> 
                    <blockquote>
                        <p><b>Description:</b></p>
                        <p>When starting NetBeans with the SELinux (Security-enhanced) Linux 
                        option enabled, startup fails.</p>
                        
                        <p><b>Workaround:</b></p>
                        <p>If this happens, disable SELinux temporarily by typing 
                        <tt>#setenforce 0</tt> from the command line. Note that this 
                        requires root priviledges. Then add <tt>selinux=0</tt> to 
                        your kernel command line to disable SELinux at boot up.</p>
                    </blockquote></li><br>
                
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=64840">Issue #64840 (Linux only) </a> 
                    <blockquote>
                        <p><b>Description:</b></p>
                        <p>Network communication broken on Linux with IPv6 enabled, 
                        preventing the IDE from connecting to bundled servers, 
                        Auto Update, etc.</p>
                        
                        <p><b>Workaround:</b></p>
                        <p>If this happens, run the IDE using the 
                        <code>-J-Djava.net.preferIPv4Stack=true'</code> switch. 
                        Alternatively, disable IPv6 (in <tt>/etc/modules.conf</tt> 
                        or <tt>/etc/modprobe.conf</tt>). <p>For more information see:
                        <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5087907">Issue #5087907</a>.</p>
                    </blockquote></li><br>

                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=66860">Issue #66860</a> 
                    <blockquote>
                        <p><b>Description:</b></p>
                        <p>Web Services node is disabled when running the IDE on JDK 1.4. This occurs 
                        because Web services rely on the JAX-RPC 1.6 XML library. When running the IDE 
                        on JDK 1.4, the necessary classes are not available to the IDE by default. 
                        Note that in JDK 1.5 and higher, the library's classes are part of the JDK. </p>
                         
                        <p><b>Workaround:</b></p>
                        <p>To enable web services when running on JDK 1.4.2_xx, use the Update Center to 
                        add the JAX-RPC 1.6 XML library to the IDE.</p>
                    </blockquote></li><br>                    
                    
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=70779">Issue #70779</a> 
                    <blockquote>
                        <p><b>Description:</b></p>
                        <p>Web samples available for English encoding character set only.</p>
                         
                        <p><b>Workaround:</b></p>
                        <p>If this happens, set the encoding character set for the file 
                        to UTF-8 by adding the following line:
                        <blockquote><code>&lt;%@page pageEncoding="UTF-8"%&gt;</code></blockquote></p>
                    </blockquote></li><br>                    
                    
                <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=72102">Issue #72102</a> 
                    <blockquote>
                        <p><b>Description:</b></p>
                        <p>Update Center doesn't work after uninstall of Mobility Pack.</p>
                         
                        <p><b>Workaround:</b></p>
                        <p>After uninstalling NetBeans Mobility Pack, remove the Java ME Platform SDK Catalog from the list 
                        of AutoUpdate Types. To do this, choose Tools > Options and switch to Advanced Options. Next, navigate 
                        to IDE Configuration > System > AutoUpdate Types. Then right-click the Java ME Platform SDK Catalog node
                        and choose Delete from the pop-up menu. Restart NetBeans IDE.</p>
                    </blockquote></li><br>

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

        <a name="documentation"></a> 
        <h2>Documentation</h2>
        <blockquote> 
            <p>The built-in help system for NetBeans IDE 5.0 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 5.0 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 5.0 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 IDE 5.0 Documentation: 
            <ul>
                <li><a href="../../../kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a></li>
            </ul>
            <br>
            <div class='greybox'>
                <p><b>Note: </b>If you are running 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>
        <p align="center"><a href="#top">top</a></p><br>

        <a name="more_info"></a>
        <h2>More Information</h2> 
        <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>
        <p align="center"><a href="#top">top</a></p><br>
        
        <br><br><br><br><br><br><br><br><br><br><br><br><br>        
    </body>
</html>

