<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>NetBeans IDE - README</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>README</h1>
<p></p>
<h2>NetBeans<sup class="tmtext">TM</sup> IDE 3.5.1</h2>
<h3>Contents</h3>

<dl>
    <dd><a href="#Introduction">Introduction</a></dd>
    <dd><a href="#WhatsChanged">What Has Changed</a></dd>
    <dl>
        <dd><a href="#WhatsChanged35">Changes Since the 3.5 Release</a></dd>
        <dd><a href="#WhatsChanged341">Changes Between the 3.4.1 and 3.5
Releases</a></dd>
        <dd><a href="#WhatsChanged34">Changes Between the 3.4 and 3.4.1 Releases</a></dd>
        <dd><a href="#WhatsChanged332">Changes Between the 3.3.2 and 3.4 Releases</a></dd>
        <dd><a href="#WhatsChangedAPI">API Changes</a></dd>
    </dl>
    <dd><a href="#SystemRequirements">System Requirements</a></dd>
    <dl>
        <dd><a href="#req_hw">Hardware</a></dd>
        <dd><a href="#req_os">Operating System</a></dd>
        <dd><a href="#req_sw">Software</a></dd>
    </dl>
    <dd><a href="#Installation">Installation</a></dd>
    <dd><a href="#Startup">The Launcher and Startup Parameters</a></dd>
    <dd><a href="#Compatibility">Compatibility/Upgrading</a></dd>
    <dd><a href="#KnownProblems">Known Problems</a></dd>
    <dd><a href="#Documentation">Documentation</a></dd>
    <dd><a href="#MoreInfo">More Information</a></dd>
</dl>

<hr>

<p></p>
<h2><a name="Introduction">Introduction</a></h2>
<blockquote>
        <p>
        Welcome to NetBeans<sup class="tmtext">TM</sup> IDE 3.5.1, 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><a href="https://netbeans.org/about/">Read more about the NetBeans project...</a>
        </p>
        <p>
        You can find the latest version of this document at
<a
href="https://netbeans.org/community/releases/35/1/README.html">https://netbeans.org/community/releases/35/1/README.html</a>.
        </p>
</blockquote>

<h2><a name="WhatsChanged">What Has Changed</a></h2>
<blockquote>

<h3><a name="WhatsChanged35">Changes Since the 3.5 Release</a></h3>
The 3.5.1 release contains bug fixes that improve the IDE's handling of text
when the IDE's default font size is increased. This fixes were necessary to
create a Chinese localization, since the Chinese characters require a larger
font size to be readable.
<h3><a name="WhatsChanged341">Changes Between the 3.4.1 and 3.5 Releases</a></h3>

Work on Release 3.5 of the NetBeans IDE was focused almost entirely on IDE
performance. Both startup time and general UI responsiveness have improved significantly.In addition, there are these changes:
<ul>
<li>Several modules, previously available on the Update Center, have been added to the standard distribution.
These modules provide many features, including support for:
<ul>
  <li>debugging servlets and applications written with JavaServer Pages<sup class="tmtext">TM</sup> technology.</li>
  <li>creating and editing tag libraries.</li>
  <li>monitoring HTTP requests.</li>
  <li>WAR file packaging.</li>
  <li>connecting to and browsing databases.</li>
</ul>
</li>

<li>Some features that existed in previous IDE releases have been removed from the standard distribution:
 <ul><li>RMI support.</li>
     <li>JNDI support.</li>
     <li>XML Tree Editor (because of persistent performance problems - see <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=31656">issue 31656</a>)
     You can download this module from the Update Center.</li>
     <li>Scripting support.</li>
     <li>New Module Wizard.</li>
     </ul>
     </li>
</ul>

<h3><a name="WhatsChanged34">Changes Between the 3.4 and 3.4.1 Releases</a></h3>

<p>Release 3.4.1 was primarily a bug fix release, but it also had the following
changes:</p>
        <ul>

       <li>The Documentation Indices command was added to the View menu to enable
       viewing of mounted Javadoc documentation in a web browser.</li>
<li>The supported version of Ant changed to version 1.5.1.</li>.

</ul>

<p>A more complete list of changes that occurred between versions 3.4 and 3.4.1 can be found
<a href="https://netbeans.org/community/releases/34/1/CHANGES.html">here</a>.
</p>

<h3><a name="WhatsChanged332">Changes Between the 3.3.2 and 3.4 Releases</a></h3>

<p>The following are some of the changes that first appeared in NetBeans IDE 3.4:</p>

<ul><li>The Ant Manual and the Javadoc for Ant were removed from the distribution.
You can add them to the IDE by downloading the Ant Documentation
 module from the NetBeans Update Center.</li>
 <li>The Javadoc tab was removed from the Explorer.</li>
 <li>The Javadoc Manager was added to the Tools menu to enable mounting of filesystems of documentation generated
 with the Javadoc tool.</li>
 <li>Support for the JDK version 1.1 Tools debugger, which is not supported in
JDK version 1.4, was removed from the distribution. Support for the JPDA debugger remains.
If you need to use the JDK version 1.1 debugger, you can download it from the Update
Center.</li>
<li>Drag and drop enabled for Explorer nodes.</li>
<li>Running workspace eliminated.</li>
<li>Close button added to tabs.</li>
<li>Import Management Tool added to simplify handling of imports in Java classes.</li>
<li>Undo/redo capability added to the Form Editor.</li>
<li>Parser errors now highlighted by glyphs in the gutter of the Source Editor window.</li>
<li>Improved design of the Debugger window.</li>
<li>Addition of Fix and Continue (HotSwap) support.</li>
<li>Addition of XML schema and XSL transformation support.</li>
<li>Addition of a toolbar in the Source Editor window.</li>
<li>Addition of a customizer for maintaining code completion databases.</li>
<li>Improved support for integration of PVCS and VSS in the IDE.</li>
<li>Addition of support for JDK version 1.4 features, such as assertions.</li>
</ul>
<p>A more complete list of changes that occurred between versions 3.3.2 and 3.4 can be found
<a href="https://netbeans.org/community/releases/34/CHANGES.html">here</a>.
</p>

<h3><a name="WhatsChangedAPI">API Changes</a></h3>

<p>If you develop modules for the NetBeans project, check the
<a href="https://netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html">NetBeans
Upgrade Guide</a> for information on API changes.</p>

</blockquote>

<h2><a name="SystemRequirements">System Requirements</a></h2>
<blockquote>
        Since NetBeans IDE is written in pure Java, it should run on any working implementation
        of Java 2 SDK, Standard Edition.
        <h3><a name="req_hw">Hardware</a></h3>
            <h4>Minimum Configuration</h4>
                <p>To run NetBeans IDE, you should have at least the
following:</p>
                <ul>
                        <li><b>Disk space</b>: 125 Mbytes</li>
                        <li><b>Memory</b>: 256 Mbytes </li>
                        <li><b>Processor</b>: PIII/500 processor (Microsoft Windows and Linux operating systems), Ultra 10
                        450 MHz workstation
                        (Solaris<sup class="tmtext">TM</sup> operating system), 500MHz Alpha (Open
VMS operating system) or equivalent</li>
                </ul>
                <b>Note:</b> If your system's memory is lower than the above recommendation, you should set
                a lower maximum heap size in the <code>bin/ide.cfg</code> file. For example, if your system has 128 Mbytes of memory,
                you can change the <code>-J-Xmx96m</code> parameter to <code>-J-Xmx48m</code>.

           <h4>Recommended Configuration</h4>

                <p>The IDE's performance was tested on machines with the following
configurations:</p>
                <ul>
                        <li><b>Solaris operating system</b>:
                        Ultra<sup class="tmtext">TM</sup> 60 workstation
                        with 512 Mbytes of
                        memory and 125 Mbytes of free disk space for
                        installation</li>
                        <li><b>Microsoft Windows operating
systems</b>: Intel Pentium III
                        workstation with a 700 MHz processor, 384 Mbytes of
                        memory, and 125 Mbytes of free disk space.</li>
                        <li><b>Linux operating system</b>: Intel Pentium III
                        workstation with a 700 MHz processor, 512 Mbytes of
                        memory, and 125 Mbytes of free disk space.</li>
                </ul>

                <h3><a name="req_os">Operating System</a></h3>
                NetBeans IDE runs on operating systems that support Java<sup class="tmtext">TM</sup> 2 SDK, Standard Edition.
                Below is a list of platforms that NetBeans IDE has been tested on.
                <ul>
                        <li>Microsoft Windows NT 4.0, 2000, and XP operating systems</li>
                        <li>Solaris operating system (SPARC<sup>&reg;</sup>  Platform Edition), versions
7, 8 and 9</li>
                        <li>Linux Red Hat versions 7.2 and 8.0</li>
                </ul>

<p>NetBeans IDE is also known to run on the following platforms:
                <ul>
                       <li>Solaris operating system (X86 Platform Edition),
                            version 9 </li>
                        <li>Microsoft Windows 95, 98, and ME operating systems</li>
                        <li>other Linux distributions</li>
                        <li>OS/2</li>
                        <li>Open VMS 7.2-1 or later</li>
                        <li>Mac OS X 10.1.1 or later</li>
                        <li>other UNIX<sup>&reg;</sup> platforms, such as HP-UX</li>
                </ul>
If you know about any other platform that NetBeans IDE runs on, please let us know.

                <h3><a name="req_sw">Software</a></h3>

                NetBeans IDE requires a Java 2-compatible JVM. Download the latest version of the appropriate JDK version
                (v. 1.3.x or 1.4.x) from the following sites:
                <ul>
                        <li><b>Windows</b>, <b>Solaris</b>, <b>Linux</b>: <a href="http://java.sun.com/j2se/1.4/download.html">http://java.sun.com/j2se/1.4/download.html</a></li>
                        <li><b>OS/2</b>: http://service.boulder.ibm.com/asd-bin/doc/en_us/catalog.htm</li>
                        <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>Mac OS X</b>: Mac OS X 10.1.1 or later. Mac OS upgrades are available via Apple's Software Update mechanism.
                        See also the <a href="#Installation">installation</a> section in this document. 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>
                <p>If you are running on
                a Microsoft Windows system, please note that the <code>runide.exe</code> installer does not detect
                JDK beta versions. You can set the <code>-jdkhome <i>jdk_home_dir</i></code> parameter
                in the <code>ide.cfg</code> file if you want to use a different JDK version than the one detected by the
                installer. See
                <a href="#Startup">The Launcher and Startup Parameters</a> for more information.</p>
</blockquote>

<h2><a name="Installation">Installation</a></h2>
<blockquote>

<UL>
<LI><b>Microsoft Windows : </b> For Windows platforms, you 
can download and run an <code>.exe</code> point-and-click 
installer that guides you through the required steps.

<P><LI><B>Unix :</B> Several <code>.bin</code> executable Installshield 
installers are available for various Unix platforms. 
You may need to make these executable before running:

<blockquote>
<code>
$ chmod +x NetBeans.bin
<br>$ ./NetBeans.bin
</code>
</blockquote>

<p>While the installer will search for any installed JDK versions, and
prompt you for which JDK version you should use, you can speed the
install up by specifying a JDK version on the command line:
</p>

<blockquote>
<code>
$ ./NetBeans.bin -is:javahome &lt;path_to_your_jdk&gt;
</code>
</blockquote>

<P><LI><b>Mac OS X :</b>

        <ul>
               <li>Untar or unzip to extract NetBeans.  Note: unzip is
               part of the developer tools, so it is not available in a normal installation.
               To untar, use gnutar instead of tar. <!-- no longer a problem
....Using StuffitExpander to extract
 NetBeans IDE can cause
               problems with truncated filenames. For more info see
               <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=16987">
               Bad expansion of .tar.gz on Mac OS X</a>--></li>
              <li>To launch NetBeans IDE open the Terminal application and go to the <code>netbeans/bin</code> directory.
              </li>
              <li>Start NetBeans IDE in the standard look and feel using the following command:<br>
<P><code>./runide.sh -jdkhome /Library/Java/Home</code>

<P>
              The -jdkhome switch can be omitted if you set the environment variable JAVA_PATH or
              JDK_HOME to /Library/Java/Home
              </li>
              <li>NetBeans IDE can be started in the Aqua look and feel using:<br>

<P><code>./runide.sh -jdkhome /Library/Java/Home -ui com.apple.mrj.swing.MacLookAndFeel -fontsize 10</code>
<P>                Note that settings are incompatible between the Aqua and normal look and feels,
                so it is a good idea to have two different user directories if you want
                to test both normal and Aqua look and feels. Use the <code>-userdir</code> switch to select different user directories.<br>
        </li></ul>

<!--this archive not yet available. Will uncomment when it is available       <p>
        On <b>OpenVMS</b> <ul>
                <li>Download the OpenVMS NetBeans self-extracting archive to
                your OpenVMS system. You may want to put this file into
                its own empty subdirectory since documentation and the
                actual installable kit will be created there.</li>
                <li>Assure your default directory is set to the directory
                where the NetBeans archive was downloaded.</li>
                <li>Execute the command: <code>$ RUN kit_name</code><br>
                Replace <code>kit_name</code> with the full name of the
                self-extracting
                archive which you just downloaded. The contents of the
                archive will now be extracted to your directory.</li>
                <li>View the installation documentation which was created in
                the extraction process and follow the steps contained in
                the guide to complete the installation.</li>
        </ul>-->
        <p>

<P><LI><b>All platforms :</b> you can download any of the archive distributions (<code>.zip</code>, <code>.tar.gz</code> or <code>.tar.bz2</code>)
and unpack them on the hard disk using your favorite tool.
Note Solaris users should use GNU tar for tar.gz files, for more info see <A HREF="http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ">the FAQ item</A>.

        Then you must customize
        the startup parameters to tell the IDE where to find the SDK.  Please read the
        <a href="#Startup">Launcher and Startup Parameters</a> section for details.

</blockquote>

<h2><a name="Startup">The Launcher and Startup Parameters</a></h2>
<blockquote>
The IDE is run by a launcher. Launchers for several platforms are located in the
<code>bin</code> subdirectory of the installation directory.
<p>
For <b>UNIX</b> systems, the Bourne shell script <code>runide.sh</code> is the launcher.<br>
For <b>Microsoft Windows</b>, use the <code>runide.exe</code> or the <code>runidew.exe</code>
executable. <code>runide.exe</code> is a Microsoft Windows console application.
When you run runide.exe, a console opens on the desktop with
<code>stderr</code> and <code>stdout</code> output from the
NetBeans IDE. You can type <code>Ctrl-Break</code> to get a thread dump,
or type <code>Ctrl-C</code> to quit the whole program.
<code>runidew.exe</code> is the executable for running NetBeans IDE
as a Windows application without a console. <br>
For <b>OS/2</b> <code>runideos2.cmd</code> is the launcher.<br>
For <b>OpenVMS</b> <code>runideopenvms.com</code> is the launcher.<br>
</p>

<p>The launcher loads the JVM, builds the IDE's classpath,
passes it along with some default parameters to the JVM, and lets the
JVM launch the Java application. It also restarts the IDE after you have
used the Update Center.
</p>

<p>You can pass startup parameters to the launcher using the
<code><i>${IDE_HOME}</i>/bin/ide.cfg</code> file. The launcher tries to read this file before it
starts parsing the command line options. You can break the
options into multiple lines.
</p>

<p>The following options are available:
</p>

<dl><dt><code>-h</code><br>
      <code>-help</code></dt>
  <dd>print descriptions of common startup parameters.
    <p></p>
  </dd>

  <dt><code>-jdkhome <i>jdk_home_dir</i></code></dt>
  <dd>use the specified version of the Java 2 SDK instead of the default SDK. By default on Windows
  systems, the loader looks into the Windows registry and uses the latest SDK available.
      <p></p>
  </dd>

  <dt><code>-classic</code><br>
  </dt>
  <dd>use the classic JVM, instead of the default Java HotSpot Client VM.
      <p></p>
  </dd>

  <dt><code>-cp:p <i>additional_classpath</i></code>
  </dt>
  <dd>
      prepend the specified classpath to the IDE's classpath.
      This option is generally not recommended for any purpose.
      <p></p>
  </dd>

  <dt><code>-cp:a <i>additional_classpath</i></code><br>
      <code>-cp <i>additional_classpath</i></code>
  </dt>
  <dd>
      append the specified classpath to the IDE's classpath.
      This option is generally recommended only for adding custom look and feel implementation JARs,
      which you may instead add to the NetBeans IDE <code>lib/ext/</code> directory.
      See the online help for information on mounting user development libraries.
      <p></p>
  </dd>

  <dt><code>-J<i>jvm_flag</i></code>
  </dt>
  <dd>
      pass the specified flag directly to the JVM.
      <p></p>
  </dd>

  <dt><code>-ui <i>UI_class_name</i></code>
  </dt>
  <dd>use a given class as the IDE's look and feel.
    <p></p>
  </dd>

  <dt><code>-fontsize <i>size</i></code>
  </dt>
  <dd>use a given size in points as the basic font size for the IDE user interface.
    <p></p>
  </dd>

  <dt><code>-locale <i>language[:country[:variant]]</i></code>
  </dt>
  <dd>use the specified locale.
    <p></p>
  </dd>

  <dt><code>-userdir <i>userdir</i></code>
  </dt>
  <dd>explicitly specify the userdir, which is the location
      in which user settings are stored.  If this option is not used on a UNIX
system, the
      location is <code><i>${HOME}</i>/.netbeans/3.5</code>. On Microsoft Windows systems,
      the default is <code>.netbeans\3.5</code> beneath your default Windows
      profile area (e.g. <code>c:\Documents&nbsp;and&nbsp;Settings\<i>yourlogin</i></code>).
    <p></p>
  </dd>

  <dt><code>-J-Dnetbeans.popup.linuxhack=true</code>
  </dt>
  <dd>under some Linux window managers, this option fixes bug
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=12496">12496</a>, in
which contextual menus appear in the upper left corner of the screen.
    <p></p>
  </dd>

  <dt><code>-J-Dnetbeans.tab.close.button.enabled=false</code>
  </dt>
  <dd>Remove the close button from tabs in the Source Editor, Explorer, and
other windows.
  </dd>

</dl>

</blockquote>
<h2><a name="Compatibility">Compatibility/Upgrading</a></h2>
<blockquote>

When you first run the IDE, you can import the settings that you used
in a previous installation of the IDE. These settings include project-specific settings
and global options. If you choose not to import settings from a previous release, the
IDE begins with a set of default settings.
<p>
If you use an installer, the installer guides you through project import choices. If you run the
IDE from an unpacked archive, the Settings Import Wizard appears the first time you run the IDE and
guides you through the choices.
</p>
<blockquote><b>Note:</b><i>
The installer 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>
You can import settings from the NetBeans IDE v. 3.0, 3.1, 3.2, 3.3, and 3.4. You can also import
settings from the Community Edition of Sun ONE Studio (formerly Forte<sup class="tmtext">TM</sup> for Java) software versions 2.0, 3.0, and 4.
</p>
<p>
In NetBeans IDE, release 3.2 or above and Sun ONE Studio version 3.0 or above, you can find the user
directory when running the software. Choose Help | About, and click the Detail tab.
</p>
<p>
Though it is possible to import settings from a previous IDE installation into
 NetBeans IDE 3.5.1, it is not possible to import all settings from the
NetBeans IDE 3.5.1 into an earlier IDE release.
</p>
</blockquote>
<p></p>
<h2><a name="KnownProblems">Known Problems</a></h2>
<p></p>
<blockquote>
The following are the major unresolved issues for this release:
<ul>

<li>Description: Various IDE and system crashes caused by bad interaction
between the Java platform and some video drivers on Microsoft Windows systems.
In particular, there are problems with JDK version 1.4.1_01 and ATI Radeon
graphic cards as outlined in
<a href="http://developer.java.sun.com/developer/bugParade/bugs/4713003.html">Bug
Parade issue 4713003</a>.<br><br>
Workarounds:
<ul><li>Update your video driver.</li>
<li>Update to JDK version 1.4.1_02 or JDK version 1.4.2.</li>
 <li>Disable the IDE's use of DirectX. You
can turn off DirectX by doing the following:
<ol><li>Expand the IDE's installation directory and opening the <code>bin/ide.cfg</code>
file.</li>
<li>Add the following switch:
<pre>-J-Dsun.java2d.noddraw=true</pre>.</li>
</ol></li></ul></li>

<li>On Linux systems, the installer hangs if you are trying to install NetBeans
3.5.1 and an installation of NetBeans 3.5.1 already exists on the computer.
<br>
<br>
Workaround: Uninstall the original installation of NetBeans 3.5.1 before
installing. <br>
<br>
</li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32958">32958</a>
Description: In some cases, when running on Microsoft Windows XP systems and JDK version 1.4.1 is
installed, the NetBeans IDE installer fails while looking for a
suitable JDK version.<br><br>

    Workaround: Reinstall the JDK software. If the problem persists with that
JDK version, try a different JDK version.<br><br>
</li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=30767">30767</a>
Description: The installer sometimes hangs when doing a clean install
(not upgrading a previous version of the IDE) after selecting the installation
directory in the wizard. This bug has been encountered on some Windows and
Linux systems but has not been isolated.<br><br>

Possible workarounds:
  <ul>
    <li>Try a different JDK version. The bug appears to be most common on JDK
     version 1.4.0.</li>
    <li>Accept the default installation directory.</li>
    <li>If you have a previous version of the IDE installed, select the import
        option when installing.</li>
    <li>If you are running on a Linux system, pressing Ctrl-\ sometimes stops
        the hang and resumes the installation.</li>
    <li>If you are running on a Windows XP system, check your permissions.
        You may need to logon as administrator or set administrator privileges
        for yourself to get the installer to work correctly.</li>
  </ul>
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32637">32637</a>,
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32682">32682</a>,
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32633">32633</a>
Description: When running on beta versions of JDK version 1.4.2, there are numerous
problems with the GTK+ look and feel that make the IDE generally unusable.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=21326">21326</a>
Description: A JAR recipe file can be corrupted if you switch projects or move files or
filesystems that the JAR recipe file refers to.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32962">32962</a>
Description: The IDE allows you to choose a project main class
that has not been added to the project, but it does not treat the
class as the main class.<br><br>

Solution: Right-click the file and choose Tools | Add to Project.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=25934">25934</a>
Description: The Goto Declaration command (Alt-G) sometimes works very slowly on some
systems.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=11637">11637</a>
Description: When using the import management tool on inner classes, the name of the outer
class is stripped from the reference to the inner class.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=28004">28004</a>
Description: Breakpoints that are set between the &lt;% and
    %&gt; tags of a JSP are not mapped to the correct lines in the
    servlet.<br><br>

    Partial workaround: In your code, do not put the &lt;% and %&gt;
    tags on their own line. Any breakpoints that you set on
    these lines will be mapped correctly. However, if you set
    breakpoints on lines between the ending and closing tags,
    the breakpoint will be mapped to the servlet line corresponding to the
    &lt;% line in the JSP.<br><br>
</li>

<li>

<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=23135">23135</a>
Description: If a web module contains JSP pages that have the same name
but are stored in different directories, then compilation errors result
when the "Build All" command is used. This problem occurs because the
Tomcat JSP compiler creates two servlets that have the same pathname.<br><br>

Workaround: Either compile the JSP pages one by
one, or set the IDE integration mode to minimal. See the Tomcat Plugin
help page entitled Adding a Tomcat 4.0 Installation for more information
about setting the IDE integration mode.<br><br></li>

<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=31573">31573</a>
Description: An Invalid LOC header (bad signature) exception can occur if you
access a JSP page for which a JAR file that the JSP depends on has been changed.
<br><br>
Workaround: Develop Java classes inside WEB-INF/classes directory rather
than putting them into a JAR file. If this is not possible or desirable,
restarting the IDE will help.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=29657">29657</a>
Description: Valid web module that contains classes
produced by the IDE's Form Editor does not compile.<br><br>

Workarounds (do one of the following):
<ul><li>On the Runtime tab, expand the Server Registry node and navigate to the
node for the appropriate Tomcat instance. Set the IDE Integration Mode property to Minimal.</li>
<li>Upgrade to JDK version 1.4.2, when it is released.</li>
</ul>
<br><br></li>

<li>
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=24443">24443</a>
Description: When debugging a servlet, if you refresh your browser
several times in rapid succession, an exception may occur."
<br><br>

Workaround: If the exception occurs, restart the web server before resuming debugging.<br><br></li>

<li>
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=20384">20384</a>
Description: Tag library JARs cannot be replaced in the <code>WEB-INF/lib</code>
directory after parsing and executing JSPs in the relevant web module.
The JSP parser, compiler, and/or executor sometimes hold on to pointers
to tag library JARs in the <code>WEB-INF/lib</code> directory. On Windows systems, the result
is that JARs intermittently cannot be deleted, resulting in a "Cannot
delete file..." exception. On the Solaris operating system, the JARs can be deleted, but when
they are replaced with new JARs, the compiler "sees" the old versions of
the JARs. To get the correct JAR replacement behavior, you must restart
the IDE.<br><br>

Workaround: Develop tag libraries by referencing the
TLDs and tag handler classes directly, without packaging the tag library
into a JAR file until the end of the development cycle.

<ol><li>Create the tag library in the <code>WEB-INF/lib</code> directory and do all
development there.</li>
<li>Set the tag handler generation root to the web module's
<code>WEB-INF/classes</code> directory.</li>
<li>To use the tag libraries from a JSP page, either directly refer to
the taglib URI as <code>/WEB-INF/lib/mytaglib.tld</code> or set an alias in the
deployment descriptor with a tag library entry.</li></ol><br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26420">26420</a>
Description: When testing or debugging web applications, an exception
(<code>org.apache.jasper.JasperException</code> or
<code>javax.servlet.ServletException: duplicate class
definition</code>) may be thrown. It will appear in the server
log file and/or in the web browser window.  This bug is a
consequence of Tomcat bug
<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6907">6907</a>.<br><br>
Workaround: Restart the Tomcat web server.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=12496">12496</a>
    Description: When right-clicking a node, the contextual menu appears in the
    upper-left corner of the screen. This bug only occurs with some Linux
    window managers.<br><br>
    Workaround: In the IDE's installation directory, open the bin
    directory. Open the ide.cfg file and add the following option:
    <pre>-J-Dnetbeans.popup.linuxhack=true</pre>
This option only works on some window managers.<br><br></li>

<li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=11020">11020</a>
    Description: There are startup errors if you have an incompatible XML parser
    in the classpath.<br><br>

Workaround: remove any stray XML parsers from your classpath
(often from your <code><i>${JDK_HOME}</i>/jre/lib/ext</code> directory).
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=17358">17358</a>
Description: If you have version 1.4.3 or earlier of xerces.jar in your
<code><i>${JDK_HOME}</i>/jre/lib/ext</code> directory, the IDE does not start up.<br><br>

Workaround: Remove the copy of <code>xerxes.jar</code> from your <code><i>${JDK_HOME}</i>/jre/lib/ext</code> directory.
<br><br></li>

<li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32594">32594</a>
Description: If the name of an XML document or the path to the document
grammar contains a space, code completion and the Validate XML command do not
    work.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=21621">21621</a>
Description: If a project that contains opened GUI forms is imported from
NetBeans IDE 3.2.x, the Component Palette might be hidden when the Form Editor
window is opened for the first time.<br><br>

Workaround: Choose View | Form Editor to display the component palette.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=23029">23029</a>
Description: The storage format of the table model for the JTable component has been changed.
It is not possible to use earlier versions of the IDE to open forms with JTable components
that were created with NetBeans IDE 3.4, NetBeans IDE 3.5, or Sun ONE Studio 5
software.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=33222">33222</a>
Description: The Tools | Internationalization | Internationalize command only works
for two strings at a time in guarded blocks of form objects.<br><br>

Workaround: Call the command again and resume internationalization of
the strings, two at a time. Repeat as many times as necessary.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32201">32201</a>
Description: When you switch from a project where the Source Editor is closed to a project where the Source Editor is
open, the Source Editor does not display files that you left open when you
last switched away from that project. In addition, the View | Source Editor
menu item is disabled. This can happen if you have imported your settings
from a previous version of the IDE.<br><br>

Workaround: Open any file. All of the files that were previously open in the Source Editor will be
opened.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=21180">21180</a>
Description: Compilation errors are printed to wrong tab in the Output
window when running an Ant script. This may occur if you are using
the "classic" or "modern" compiler and you are running on JDK version 1.4. <br><br>

Workaround: Use a different JDK version (such as version 1.4.1) or use a different
compiler, such as external javac or Jikes.<br><br>
</li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=33835">33835</a>
Description: Some Ant tasks fail when trying to load files. This occurs if the IDE
is installed in a directory that has spaces in its name.<br><br>
Workaround: Move the IDE to a directory that does not contain spaces
in the name. <br><br>
</li>

<li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=33474">33474</a>
Description: The IDE becomes slow while mounting large VCS file systems. This
situation occurs because the action of updating the parser database consumes
system resources. <br><br>

Workaround: To improve performance, you can disable the updating of the parser database:<br>
    <br>
    <ol>
      <li>Select Tools | Options | Editing | Editor Settings | Java
        Editor | Expert Properties | Update Code Complete Database After
        Mounting </li>
      <li> Set the property to <code>Never</code>.<br><br>
      </li>
    </ol>
  </li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32186">32186</a>
Description: When running on Microsoft Windows systems and there is a space in the
name of your user directory, a Wincat.bat node appears in the Explorer
after you run the Commit command on a generic VCS filesystem. <br><br>

Workaround: The node is harmless, so you can ignore it. Or you can
remove the node by running the Refresh command on the filesystem.<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=22481">22481</a>
Description: After changing font and line height correction settings, the spacing between
the line numbers does not match the spacing of the lines in the Diff window.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=25844">25844</a>
Description: Line numbers do not always match when using the CVS Diff command with the
Ignore Blank Lines option turned on.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=25263">25263</a>,
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=25259">25259</a>,
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=23846">23846</a>,
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=25271">25271</a>
Description: When importing projects that have mounted generic VCS filesystems
from NetBeans IDE 3.2, a number of problems occur. For example, the
Versioning Explorer command does not work and some settings are not
preserved.<br><br>

Workaround: Unmount and then remount all VCS filesystems.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26324">26324</a>
Description: When running the IDE on JDK version 1.4 and using the Windows look and feel,
the search highlighting in the Help window obscures the text it is highlighting.<br><br>

Workaround: Use a different JDK version or look and feel.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32019">32019</a>
Description: It is not possible to copy and paste containers that use custom
layout managers.<br><br>
Workaround: Set the container's layout manager to a standard layout (such as FlowLayout).
Then do the copy and paste, and set the correct layout manager afterwards.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=29614">29614</a>
Description: Sometimes it takes a long time for the IDE
    to process XSL transformations. To prevent JVM overload,
    the XSLT Transform command is disabled when another
    transformation is being done.
<br><br>
    Note: Many different XSLT processors are available. By
    default, the IDE uses the XALAN parser, but you may find that another
    parser performs better for the
    transformations you regularly perform. If you want to use a different
    parser consult JAXP 1.1 specification or check the FAQ section of the
    <a href="http://xml.netbeans.org/">NetBeans XML module home page</a>.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=22802">22802</a>
Description: The IDE might freeze when using the Database Explorer to
    connect to a database under some circumstances, such as
    network overload, slow response from the database server,
    or retrieval of a large amount of data.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32093">32093</a>
Description: If you access the Web through a proxy, using the Javadoc Manager to
mount Javadoc as an HTTP filesystem might not work.
<br><br></li>

<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32865">32865</a>
Description: In the CORBA module (only available from the Update Center), the Copy
Client Binding Code command does not generate the correct path. This also
affects generation of Client Java source file from the CORBA Wizard.
The problem also occurs when you generate a Server source file using CORBA
wizard with the Naming Server binding method.<br><br>

Workaround: Fill in the missing path manually in the Source Editor of
Client Java source file.
<br><br></li>

</ul>
Use the <a href="https://netbeans.org/community/issues.html">Issuezilla</a> bug tracking system for checking currently open bugs.
Or you can find the most up-to-date version of this list at
<a href="https://netbeans.org/community/releases/35/README.html#KnownProblems">https://netbeans.org/community/releases/35/README.html#KnownProblems</a>.

</blockquote>

<h2><a name="Documentation">Documentation</a></h2>
<blockquote>
Documentation is provided for the NetBeans IDE in the form of online help.
To access all of the available online help, choose Help | Contents.

<!-- XXX misc. GUI hacks:
-J-Dnetbeans.windows.small_main_window=true - no longer works
Toolbars/WorkspaceSwitcher/
-J-Dnetbeans.scrolling.tabs=true - seems to be broken
-->

</blockquote>
<h2><a name="MoreInfo">More Information</a></h2>
<blockquote>
There is extensive information on the NetBeans project web site, <a href="https://netbeans.org/">https://netbeans.org/</a>.
Included on the web site are a FAQ and instructions on how to subscribe to
mailing lists where you can ask questions, post comments, or help others.
<p>
As NetBeans is an open-source project, you can get access to the source code, bug database, and much more
at <a href="https://netbeans.org/">https://netbeans.org/</a>.
</p>
<p>
<!--More information about <b>NetBeans IDE 3.5.1</b> is available at
<a
href="https://netbeans.org/community/releases/35/">https://netbeans.org/community/releases/35/</a>.-->
</p>
</blockquote>
</body>
</html>
