<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>NetBeans IDE - README</title>
   <link rel="stylesheet" type="text/css" href="netbeans.css">
</head>
<body>
<h1>README</h1>
<p>
<h2>NetBeans IDE - Release 3.4</h2>
<h3>Contents</h3>

<dl>
        <dd><a href="#Introduction">Introduction</a></dd>
        <dd><a href="#WhatsChanged">What's Changed In This Release</a></dd>
        <dd><a href="#WhatsNew">What's New In This Release</a></dd>
        <dd><a href="#SystemRequirements">System Requirements</a></dd>
        <blockquote>
        <dl>
                <dd><a href="#req_hw">3.1 Hardware</a></dd>
                <dd><a href="#req_os">3.2 Operating System</a></dd>
                <dd><a href="#req_sw">3.3 Software</a></dd>
        </dl>
        </blockquote>
        <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>
<h2><a name="Introduction">Introduction</a></h2><p>
<blockquote>
        <p>
        Welcome to NetBeans IDE release 3.4, a modular, standards-based integrated development environment (IDE),
        written in Java.
        NetBeans is not just an IDE. NetBeans is:
        <ul>
        <li>An <a HREF="../../../features/ide/index.html">open source IDE</a> written in
        the Java<sup CLASS="tmtext">TM</sup> programming language.</li>

        <li>A <a HREF="../../index.html">tools platform</a> into which other
        tools and functionality can be seamlessly integrated by writing and
        incorporating modules.</li>

        <li>An <a HREF="../../../features/platform/index.html">application core</a> which can be
        used as a generic framework to build any kind of application.</li>
        </ul>
        <p><a HREF="../../../features/index.html">Read more about NetBeans...</a>
        <p>
        You can find the latest information about this release on the <a href="index.html">Release 3.4 pages</a>.
</blockquote>

<p><h2><a name="WhatsChanged">What's Changed In This Release</a></h2><p>
<blockquote>

<p>Some features that existed in previous NetBeans releases have been
removed from this release:</p>
        <ul>
        <li>Support for the JDK 1.1 Tools debugger, which does not work with v.
1.4 of the JDK, has been removed from the distribution. Support for the JPDA debugger remains.
If you need to use the JDK 1.1 debugger, you can download it from the Update
Center.<br><br></li>
       <li>The Javadoc tab has been removed from the Explorer. You can manage
Javadoc sources through the Javadoc Manager, which you can open from the Tools
menu. You can also use the Javadoc Index Search to view documentation for a
class.
<p>If you want to view a particular Javadoc directory in the Explorer, set
its Hidden property to False. The directory will appear in the Filesystems tab
of the Explorer.</p>
<p>To replicate the previous functionality, you can download
 the (unsupported) Javadoc UI Helper module from the NetBeans Alpha Update Center. See
<A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=22805">Issuezilla bug
22805</a> for more information.</p>

<li>The Ant Manual and the Javadoc for Ant have been removed from this
distribution. You can add them to the IDE by downloading the Ant Documentation
 module from the NetBeans Update Center.</li>
</ul>

<p>If you develop modules for NetBeans, 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>
<p><h2><a name="WhatsNew">What's New In This Release</a></h2><p>
<blockquote>
        The NetBeans 3.4 release contains many new features and enhancements.
<p>
        The complete list of new features implemented in this release is available in the IDE's installation folder
        in the <a href="CHANGES.html">CHANGES.html</a> file.

</blockquote>

<p><h2><a name="SystemRequirements">System Requirements</a></h2><p>
<blockquote>
        Since NetBeans is written in pure Java, it should run on any working implementation
        of Java<sup CLASS="tmtext">TM</sup> 2 SDK, Standard Edition.
        <p><h3><a name="req_hw">3.1 Hardware</a></h3><p>
        <blockquote>
                The hardware requirements are similar for all platforms, but it may differ slightly for some cases.
                The recommended configuration for running the NetBeans IDE is:
                <ul>
                        <li><b>Disk space</b>: 40 Mbytes</li>
                        <li><b>Memory</b>: 128 (Windows platforms) - 256 Mbytes (most other operating systems)</li>
                        <li><b>Processor</b>: PII/300 (Windows or Linux), UltraSPARC II/450 (Solaris), 500MHz Alpha (Open VMS) 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 64 Mbytes of memory,
                you can change the <code>-J-Xmx96m</code> parameter to <code>-J-Xmx48m</code>.
        </blockquote>
        <p><h3><a name="req_os">3.2 Operating System</a></h3><p>
        <blockquote>
                Any operating system supporting Java(TM) 2 SDK, Standard Edition.
                Below is a list of platforms that the NetBeans IDE can run on.
                If you know about any other platform, please let us know.
                <ul>
                        <li>Windows 95, 98, NT 4.0, 2000, XP, ME</li>
                        <li>Solaris 8</li>
                        <li>Linux - any distribution</li>
                        <li>OS/2</li>
                        <li>Open VMS 7.2-1 or later</li>
                        <li>Mac OS X 10.1.1</li>
                        <li>HP-UX</li>
                </ul>
        </blockquote>
        <p><h3><a name="req_sw">3.3 Software</a></h3><p>
        <blockquote>
                NetBeans requires a Java 2-compatible JVM. Download the latest version of the appropriate JDK
(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>: <a href="http://service.boulder.ibm.com/asd-bin/doc/en_us/catalog.htm">http://service.boulder.ibm.com/asd-bin/doc/en_us/catalog.htm</a></li>
                        <li><b>Open VMS</b>: <a href="http://www.compaq.com/java/download/index.html">http://www.compaq.com/java/download/index.html</a></li>
                        <li><b>Mac OS X</b>: Mac OS X 10.1.1. The upgrade from Mac OS X 10.1 to 10.1.1 is available via Apple's Software Update mechanism.
                        See also the <a href="#Installation">installation</a> section in this document. More information about using
                        NetBeans on Mac OS X is available at <a HREF="https://netbeans.org/ide/support/mac.html">https://netbeans.org/ide/support/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
                beta versions of the JDK. 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 than the one detected by the
                installer. See
                <a href="#Startup">The Launcher and Startup Parameters</a> for more information.</p>
        </blockquote>
</blockquote>

<p><h2><a name="Installation">Installation</a></h2><p>
<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>
        Several ".bin" executable
Installshield installers are available for various <b>UNIX</b> 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 JDKs, and
prompt you for which NetBeans should use, you can speed the
install up by specifying a JDK on the command line:

<BLOCKQUOTE>
<code>
$ ./NetBeans.bin -is:javahome &lt;path_to_your_jdk&gt;
</code>
</BLOCKQUOTE>
        <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>
        <ul>
               <LI>Untar, unzip to extract NetBeans.  Note: unzip is
               part of the developer tools, so it is not available in a normal installation.
               Do not forget to use gnutar instead of tar. Using StuffitExpander to extract NetBeans can cause
               problems with truncated filenames for NetBeans 3.3. 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 open the Terminal application and go to the <CODE>netbeans/bin</CODE> directory.
              </LI>
              <LI>Start NetBeans 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 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>
        </ul>
        <p>
</blockquote>

<p><h2><a name="Startup">The Launcher and Startup Parameters</a></h2><p>
<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>, 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 the 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>
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>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>The following options are available:

<DL>
  <DT><CODE>-h</CODE><BR>
      <CODE>-help</CODE>
  <DD>print descriptions of common startup parameters.
    <P>
  </DD>

  <DT><CODE>-jdkhome <I>jdk_home_dir</I></CODE></DT>
  <DD>use the specified version of the Java(TM) 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>
  </DD>

  <DT><CODE>-classic</CODE><BR>

  </DT>
  <DD>use the classic JVM, instead of the default Java HotSpot Client VM.
      <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>
  </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 <code>lib/ext/</code> directory.
      See the online help for information on mounting user development libraries.
      <P>
  </DD>

  <DT><CODE>-J<I>jvm_flag</I></CODE>
  <DD>
      pass the specified flag directly to the JVM.
      <P>
  </DD>

  <DT><CODE>-ui <I>UI_class_name</I></CODE>
  <DD>use a given class as the IDE's look and feel.
    <P>
  </DD>

  <DT><CODE>-fontsize <I>size</I></CODE>
  <DD>use a given size in points as the basic font size for the IDE user interface.
    <P>
  </DD>

  <DT><CODE>-locale <I>language[:country[:variant]]</I></CODE>
  <DD>use the specified locale.
    <P>
  </DD>

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

  <DT><CODE>-J-Dnetbeans.winsys.dnd=true</CODE>
  <DD>enable drag and drop support in the IDE. This feature is turned off by
default because of some bugs that make the behavior slow and unpredictable.
  </DD>

  <DT><CODE>-J-Dnetbeans.popup.linuxhack=true</CODE>
  <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.
  </DD>

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

</DL>

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

When you first run the NetBeans IDE Release 3.4, 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. The Import Wizard guides you through the choices.
<p>
You can import settings from the NetBeans IDE v. 3.0, 3.1, 3.2, and 3.3. You can also import
settings from Sun ONE Studio (formerly Forte for Java) software versions 2.0, 3.0, and 4.0.
<p>
In the NetBeans IDE Release 3.2 or above and Forte for Java 3.0 or above, you can find the user
directory when running the software. Choose Help | About, and click the Detail tab.
<p>
Though it is possible to import settings from a previous IDE installation into
the NetBeans IDE Release 3.4, it is not possible to import settings from the NetBeans
IDE Release 3.4 into an earlier IDE release.

</blockquote>
<p><h2><a name="KnownProblems">Known Problems</a></h2><p>
<blockquote>
The following are some of the major unresolved issues for this release:
<ul>
<LI> <A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=26054">26054:</A>
    Description: The installer does not finish when running on Linux and
JDK 1.4.1.<br><br>
Workaround: Use JDK 1.4.<br><br></LI>

<LI> <A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=26049">26049:</A>
Description: If, when you are installing the NetBeans 3.4
    software, you choose to import settings from a previous version of the
    IDE, modules that you added to your previous version of the IDE
    through the Update Center will not be imported.<br><br>

    Workaround: Use the Update Center to reinstall those modules.<br><br></LI>


<li><A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=22152">22152</A>,
<A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=22789">22789</A>
Description: Large and complex XML files open very slowly in the tree
editor and might cause OutOfMemory errors.<br><br>
Workaround: Open such files with the Edit command to edit them in the text editor instead of the tree
editor.<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=21621">21621</A>
Description: If a project that contains opened GUI forms is imported from
NetBeans 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>
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 in NetBeans 3.4.<br><br></li>


<li>
<A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=25753">25753:</A>
Description: If you run an Ant target in the IDE multiple times,
an out of memory error may occur. This error occurs on JDK 1.3.1.<br><br>

Workaround: Run the IDE on JDK 1.4.<br><br></li>

<A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=24474">24474:</A>
Description: When using the Ant Script Compilation compiler type, the
Next Error and Previous Error commands do not work, because an output tab
that does not contain the errors is active. Switching to the correct tab
does not fix the problem.
<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 1.4. <br><br>

Workaround: Use a different JDK (including JDK 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=25701">25701</A>
Description: If you use indirect Ant compilation in a project and the build script
    defined in the Ant indirect compiler lies on a filesystem mounted in
    the project, the link to the build script will become invalid if you
    switch projects. You
    will need to reset the link to the build script every time you switch
    back to that project.<br><br>

    The problem only occurs if you explicitly customize Indirect Ant Compilation to
    point to a specific build script. Its default behavior is to search
    for a <code>build.xml</code> file in the directory in which the file to be compiled
    resides, or the nearest parent directory up the file tree containing a
    <code>build.xml</code> file. (This behavior is akin to Ant's regular -find switch.)
    This default behavior should be unaffected by issue #25701, because
    Indirect Ant Compilation
    will find the <code>build.xml</code> file from scratch each time it is run, so a project
    switch is irrelevant.<br><br>

    This problem will not occur if you never switch projects or if the
    build script is not in a mounted filesystem.<br><br>
</li>


<li> <A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=25907">25907</a>,
<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>

<li> <A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=20877">20877</a>,
<A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=20384">20384</a> (This
problem applies if you use the JSP Tag Library Editor, which is available from
the NetBeans Alpha Update Center.) <br><br>
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, the result
is that JARs intermittently cannot be deleted, resulting in a "Cannot
delete file..." exception. On Solaris, 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=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=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=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=22856">22856</A>
Description: The Fix and Continue feature does not work correctly
if you change code in the main method. You are not given the option to
use modified code. The class is recompiled, but it is not possible to
continue debugging.<br><br>

Workaround: Make necessary changes in the main method and then restart
the debugger session.<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=22533">22533</A>
Description: After setting the Check Out Files as Read Only option as the default in the
advanced dialog box for CVS commands in a generic VCS filesystem, the new
default is not retained when the IDE is restarted. <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=25364">25364</A>
Description: The automatic refresh of file status in version-controlled
filesystems does not work correctly. Even if the Auto Refresh property
for a filesystem is set to refresh files when a folder is opened, source
files in that directory do not get refreshed (though files in subdirectories
do get refreshed).<br><br>
Workaround: Manually refresh the folder using the either the Refresh or the
Refresh Recursively command from the folder's submenu.

<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 a NetBeans 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 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 or look and feel.
<br><br></li>



</ul>
Use the <a href="../../issues.html">Issuezilla</a> bug tracking system for checking currently open bugs.


</blockquote>
<p><h2><a name="Documentation">Documentation</a></h2><p>
<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>
<p><h2><a name="MoreInfo">More Information</a></h2><p>
<blockquote>
There is extensive information on the NetBeans project website, <a href="https://netbeans.org/">https://netbeans.org/</a>.
Included on the website 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>
More information about the <b>NetBeans IDE, Release 3.4</b> is available at
<a href="index.html">https://netbeans.org/community/releases/34/index.html</a>.
</blockquote>
</body>
</html>
