<!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</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="#WhatsChanged341">Changes Since the 3.4.1 Release</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, 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/README.html">https://netbeans.org/community/releases/35/README.html</a>.
        </p>
</blockquote>

<h2><a name="WhatsChanged">What Has Changed</a></h2>
<blockquote>
<h3><a name="WhatsChanged341">Changes Since Release 3.4.1</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>
        For <b>all platforms</b> you can download the <code>.zip</code> or the <code>.tar.gz</code> or the <code>.tar.bz2</code>
        archive file and
        unpack it on the hard disk using your favorite tool.  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.

        <p>
        On <b>Microsoft Windows</b> platforms, you can download and run an <code>.exe</code> point-and-click
        installer that guides you through the required steps.
        </p>
        <p>
        Several ".bin" executable
Installshield installers are available for various <b>UNIX</b> platforms.
You may need to make these executable before running:
        </p>

<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>
<!--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>
        On <b>Mac OS X</b>
        </p>
        <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>
              <code>&nbsp;&nbsp;./runide.sh -jdkhome /Library/Java/Home</code><br>
              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>
              <code>&nbsp;&nbsp;./runide.sh -jdkhome /Library/Java/Home -ui com.apple.mrj.swing.MacLookAndFeel -fontsize 10</code><br>
              <br>
                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>
        <p></p>
</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, it is not possible to import all settings from the 
NetBeans IDE 3.5 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><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</b> is available at
<a
href="https://netbeans.org/community/releases/35/">https://netbeans.org/community/releases/35/</a>.-->
</p>
</blockquote>
</body>
</html>
