<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
*     Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
*     Use is subject to license terms.
--> 
<html>
    <head>
        <title>NetBeans IDE 6.0.1 Release Notes and System Requirements</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="description" content="NetBeans IDE 6.0 Release Notes: 
        System Requirements, Compatibility, Known Issues, Documentation">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">   
        <style type="text/css">
<!--
.style7 {font-size: 0.7px}
-->
        </style>
    </head>
    
    <body>
        <a name="top"></a>
        <h1>NetBeans IDE 6.0.1 Release Notes </h1>
        <div class="articledate" style="margin-left: 0px;">Last updated:  <!-- #BeginDate format:Am1 -->March 26, 2008<!-- #EndDate -->      </div>
            <p>NetBeans IDE is a modular, standards-based integrated development environment (IDE),
            written in the Java programming language. The NetBeans project consists of an <a href="../../../features/index.html">open 
            source IDE</a> written in the Java programming language and an <a href="../../../features/platform/index.html">application 
            platform</a>, which can be used as a generic framework to build any kind of application.</p>

                <h2 style="color:#0E1B55">Contents</h2>
                <ul>
                    <li><a href="#601">What's New in 6.0.1</a><span class="articledate">
                    <li><a href="#supported_technologies">Supported Technologies</a><span class="articledate">
                      
                    </span></li>
                    <li><a href="#system_requirements">System Requirements</a></li>
                    <li><a href="#compatibility">Compatibility</a></li>
					<li><a href="#sql-db">SQL and Databases</a></li>
                    <li><a href="#known_issues-installer">Known Issues: Installer</a></li>
                    <li><a href="#known_issues-core">Known Issues: Core IDE</a></li>
                    <li><a href="#known_issues-web-java">Known Issues: Web and Java EE</a></li>
                    <li><a href="#known_issues-mobility">Known Issues: Mobility</a></li> 
                    <li><a href="#known_issues-uml">Known Issues: UML</a></li>                    
                    <li><a href="#known_issues-soa">Known Issues: SOA</a></li>
<!--                    <li><a href="#known_issues-ruby">Known Issues: Ruby </a></li>-->
                    <li><a href="#known_issues-cnd">Known Issues:
                    C/C++</a></li>
<!--                <li><a href="#documentation">Documentation</a></li>-->
                    <li><a href="#more_info">More Information</a></li>
                </ul>
        <a name="601"></a>
        <h2>What's New in 6.0.1</h2>
            <p>NetBeans IDE 6.0.1 is a small update to NetBeans IDE 6.0 and 
            includes the following changes:</p>
            <ul>
                <li>Addition of Japanese, 
                Simplified Chinese, and Brazilian Portuguese localizations.</li>
                <li>Glassfish V2 is replaced with Glassfish V2 UR1.</li>
                <li>Addition of a plugin for optional user registration at sun.com.</li>
                <li>The integration of the December 2007 and January 2008 bug fixes listed on 
                the following page: <a href="http://wiki.netbeans.org/wiki/view/NetBeans6.0PatchesInfo">http://wiki.netbeans.org/wiki/view/NetBeans6.0PatchesInfo</a>. 
                <p>If you have already installed NetBeans IDE 6.0, you can get these fixes 
                through the IDE's Plugins Manager without downloading the 6.0.1 version. In the IDE, choose 
                Tools &gt; Plugins, select the Update tab, and then select the 
        appropriate updates.</p></li>
    </ul>
                <p>For information about the main development features in NetBeans IDE, 
                see the <a href="index.html">NetBeans IDE 6.0 Information</a> page.</p>

        
        <a name="supported_technologies"></a>
        <h2>Supported Technologies</h2>
        <br>
        <p>NetBeans IDE 6.0 supports the following technologies and has been tested with the following application servers.
        If you plan to use versions of JBoss, WebLogic, or Struts other than those explicitly listed, please note that you may encounter unpredictable IDE 
        behavior as a result of the technologies being external interfaces which the project team has little or no control over. </p>
        <br>
            
        <h5>Supported technologies:</h5>
            <div style="float:left; width:48%; font-size:11px; margin:0px auto; padding:10px; background-color:#ffffff; border:0px solid #e3e3e3;">
                <ul>
                    <li>Enterprise JavaBeans (EJB) 3.0</li>
                    <li>JAX-WS 2.1</li>
                    <li>Java Persistence (JSR-220)</li>
                    <li>JavaServer Faces 1.2 (JSR-127)</li>
                    <li>Java Servlet 2.5</li>
                    <li>JavaServer Pages (JSP) 2.1</li>
                </ul>
            </div>
            <div style="width:48%; font-size:11px; margin:0px auto; background-color:#ffffff; padding:10px; border:px solid #e3e3e3;">
                <ul>
                    <li>Struts 1.2.9</li>
                    <li>Java API for XML-based Remote Procedure Calls (JAX-RPC) 1.6</li>
                    <li>Java APIs for XML Registries (JAXR) 1.0</li>
                    <li>Java API for XML Processing (JAXP) 1.4</li>
                    <li>Java Architecture for XML Binding (JAXB) 2.1</li>
                    <li>JavaServer Pages Standard Tag Library (JSTL) 1.1</li>
                </ul>
            </div>

<br style="clear:both;" />
<br>
        <h5>Tested application servers:</h5>

            <div style="float:left; width:48%; font-size:11px; margin:0px auto; padding:10px; background-color:#ffffff; border:0px solid #e3e3e3;">
            <ul>
                <!--<li>Sun Java System Application Server PE 8.1 update 2</li>-->
                <li>Sun Java System Application Server 9.0 (GlassFish V1)</li>
                <li>Sun Java System Application Server 9.1 (GlassFish V2)</li>
                <li>Sun Java System Application Server PE 8.2</li>
                <li>Tomcat 5.5</li>
                <li>Tomcat 6.0</li>
            </ul>
            </div>
            <div style="width:48%; font-size:11px; margin:0px auto; background-color:#ffffff; padding:10px; border:0px solid #e3e3e3;">
            <ul>
                <li>JBoss 4.0.4</li>
                <li>Websphere 6.0</li>
                <li>WebLogic 9.2</li>
                <li>WebLogic 10</li>
            </ul>
            </div>            
<br style="clear:both;" />
<br>

        <div position style="width:80%; margin:20px; padding:10px; background-color:#f9f9f9; border:1px solid #e3e3e3;">
                <p><b>Note:</b> If you are using the GlassFish application server, it is recommended that 
                you run GlassFish V2 in order to work with NetBeans IDE 6.0.</p>
        </div> 
            
       

        <a name="system_requirements"></a>
        <h2>System Requirements</h2>
            <p>NetBeans IDE runs on operating systems that support the Java VM (Virtual Machine) and has been tested on the platforms listed below. </p>

            <p><b>Note:</b> The IDE's minimum screen resolution is 1024x768 pixels.</p>

<br style="clear:both;" />

            <a name="req_os"></a>
<!--            <h5 style="border-bottom:0">Supported Hardware Configurations</h5>-->
            <h5 style="border-bottom:0">Supported Operating Systems</h5>
            <br>
            
        <div style="width:98%; border:0px solid #e3e3e3;">
            
            <div style="float:left; width:45%; height:auto; font-size:11px; margin:0px; padding-top:0px; padding-left:10px; padding-right:5px; padding-bottom:10px; border:0px solid #e3e3e3;">
            <h3 style="border-bottom:0; margin-bottom:10px">Minimum Hardware Configurations</h3>
                <ul>
                    <li><b>Microsoft Windows XP Professional SP2:</b>
                        <ul>
                            <li><b>Processor: </b>800MHz Intel Pentium III or equivalent</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>750 MB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Microsoft Windows Vista:</b>
                        <ul>
                            <li><b>Processor: </b>800MHz Intel Pentium III or equivalent</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>750 MB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Ubuntu 7.x:</b>
                        <ul>
                            <li><b>Processor: </b>800MHz Intel Pentium III or equivalent</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>650 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Red Hat EL 4:</b>
                        <ul>
                            <li><b>Processor: </b>800 MHz Intel Pentium III or equivalent </li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>450 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Solaris OS version 10 (SPARC):</b>
                        <ul>
                            <li><b>Processor: </b> UltraSPARC II 450 MHz</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>650 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Solaris OS version 10 (x86/x64 Platform Edition):</b>
                        <ul>
                            <li><b>Processor: </b>AMD Opteron 1200 Series 1.8 GHz</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>650 MB of free disk space</li>
                        </ul>
                    <br>
                    </li>
                    <li><b>Macintosh OS X 10.4.9 Intel:</b>
                        <ul>
                            <li><b>Processor: </b>Dual-Core Intel</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>650 MB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Macintosh OS X 10.4.9 PPC:</b>
                        <ul>
                            <li><b>Processor: </b>PowerPC G4</li>
                            <li><b>Memory: </b>512 MB</li>
                            <li><b>Disk space: </b>650 MB of free disk space </li>
                        </ul>
                    For more information, see <a href="../../../kb/articles/mac.html">Using NetBeans on Mac OS X</a>.</li>
                </ul>
            </div>
                
            <div style="float:right; width:45%; height:auto; font-size:11px; margin:0px; padding-top:0px; padding-left:5px; padding-right:10px; padding-bottom:10px; background-color:#f9f9f9; border:1px solid #e3e3e3;">
                <h3 style="border-bottom:0; margin-bottom:10px">Recommended Hardware Configurations</h3>
                <ul>
                    <li><b>Microsoft Windows XP Professional SP2:</b>
                        <ul>

                            <li><b>Processor: </b>2.6 GHz Intel Pentium IV or equivalent</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>1 GB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Microsoft Windows Vista:</b>
                        <ul>
                            <li><b>Processor: </b>2.6 GHz Intel Pentium IV or equivalent</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>1 GB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Ubuntu 7.x:</b>
                        <ul>
                            <li><b>Processor: </b>2.6 GHz Intel Pentium IV or equivalent</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>850 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Red Hat EL 4:</b>
                        <ul>
                            <li><b>Processor: </b>2.6 GHz Intel Pentium IV or equivalent</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>850 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Solaris OS version 10 (SPARC):</b>
                        <ul>
                            <li><b>Processor: </b>UltraSPARC IIIi 1 GHz</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>850 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Solaris OS version 10 (x86/x64 platform edition):</b>
                        <ul>
                            <li><b>Processor: </b>AMD Opteron 1200 Series 2.8 GHz</li>
                            <li><b>Memory: </b>1 GB</li>
                            <li><b>Disk space: </b>850 MB of free disk space</li>
                        </ul>
                    </li>
                    <br>
                    <li><b>Macintosh OS X 10.4.9 Intel:</b>
                        <ul>
                            <li><b>Processor: </b>Dual-Core Intel</li>
                            <li><b>Memory: </b>1 GB </li>
                            <li><b>Disk space: </b>850 MB of free disk space </li>
                        </ul>
                    </li>
                    <br>
                  <li><b>Macintosh OS X 10.4.9 PPC:</b>
                        <ul>
                            <li><b>Processor: </b>PowerPC G5</li>
                            <li><b>Memory: </b>1 GB </li>
                            <li><b>Disk space: </b>850 MB of free disk space </li>
                        </ul>
                    For more information, see <a href="../../../kb/articles/mac.html">Using NetBeans on Mac OS X</a>. </li>
                </ul>
            </div>
        <br style="clear:both;" />
        </div>

<br style="clear:both;" />
<br>
            <p>NetBeans IDE is also known to run on the following platforms:</p>
            <ul><li>Java Desktop System 2</li>
                <li>Microsoft Windows 2000 Professional SP4 </li>
                <li>Mac OS X 10.4.5 Intel</li>
                <li>Various other Linux distributions, such as Red Hat Enterprise Linux </li>

            </ul>
<br>
        <br>
        <div position style="width:80%; margin:20px; padding:10px; background-color:#f9f9f9; border:1px solid #e3e3e3;">
            <p><b>Note: </b>While the above system requirements apply to most configurations 
            of the IDE, some areas of NetBeans Web and Java EE support are particularly 
            demanding on system resources, especially when used in combination with 
            various application servers. For best results when developing Web and Java EE applications, 
                make sure that your system meets at least the <i>recommended</i> system requirements.
            <!--For details, see the <a href="#known_issues-web-java">Known Issues: Web and Java EE</a> section.--></p>
        </div>

            <a name="req_sw"></a>
            <h2>Required Software</h2>
            <br>
            <p>NetBeans IDE runs on the J2SE (Java SE Development Kit) JDK 5.0 Update 12 and higher (including JDK 6.0), which consists of the Java Runtime 
            Environment plus developer tools for compiling, debugging, and running applications written in the Java language. </p>

            <p>You can download the JDK for your platform from one of the sites listed
            below: </p>
            <ul>
                <li><b>Solaris</b>: <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/j2se/1.5.0/download.html</a></li>
                <li><b>Windows</b>: <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/j2se/1.5.0/download.html</a></li>
                <li><b>Linux</b>: <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/j2se/1.5.0/download.html</a></li>
                <li><b>Mac OS X</b>: <a href="http://www.apple.com/support/downloads/javaformacosx104release5.html">http://www.apple.com/support/downloads/javaformacosx104release5.html</a> 
                (Mac OS X 10.4.8 or later). Java upgrades for Mac OS-X are also available via Apple's Software Update mechanism. </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>
    </ul>
                <p><b>Note</b>: You can download archived versions of the JDK at 
                <a href="http://java.sun.com/products/archive/index.html">http://java.sun.com/products/archive/index.html</a>.</p>

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

        <a name="compatibility"></a>
        <h2>Compatibility</h2>
        <br>
        <p>When you first run the IDE, you can import a subset of the settings 
        you used in NetBeans IDE 5.5. If you choose not to import settings from a previous 
        release, the IDE opens using the default settings.</p>
		
        <blockquote>
		  <p><b>Note:</b><i> The IDE only recognizes previous installations where 
          the user directory resides in the default location. It does not recognize 
          installations where you have specified a user directory using the <code>--userdir</code> 
          switch. If you would like to import settings from an IDE that the installer 
          does not recognize, download an archive version of the IDE instead of using the 
          installer.</i>

            
          </p>
		  <p><b>Note:</b> If you edit the Project Properties in NetBeans IDE 6.0 
                   for a project that was created
        in NetBeans IDE 4.1 or earlier, the project will no longer
        work in the earlier NetBeans IDE versions. </p>
	</blockquote>
        <br> 
        <!--</blockquote>-->
        
        <p align="center"><a href="#top">top</a></p><br>
 <a name="sql-db"></a>
<h2>SQL Editor and Databases</h2>
<p>There have been changes made to Visual SQL Editor and database functionality in NetBeans 6.0. They are as follows: </p>
<ul>
<li><b>Visual SQL Editor: Quoting</b><br>
NetBeans no longer quotes identifiers when creating database objects. As a result, you no longer need to worry about quoting identifiers when editing and executing SQL statements against objects created in the Database Explorer.
If you do want your identifier to be quoted, you can do so by manually quoting the identifier in the Database Explorer when creating your table, column, index or view.
Also, we no longer automatically quote identifiers when generating SQL, for instance when we create the SQL for the 'View Data' command. Instead, we only quote one or more characters in the identifier is a character that must be quoted (normally anything besides A-Z,a-z,0-9 and _). 
</li>
<li><b>Databases: Saving the Connection Password</b><br>
As of NetBeans Release Candidate 1, when opening a database connection, you can opt to save the password.

When a connection password is saved, when you choose Connect for the connection, the connection is automatically established without bringing up the dialog.
If you want to disable saving the password, choose Properties... for the connection and un-check 'Save Password'.  Then next time you connect, the connection dialog will come up and you can enter the password.
The connection password is saved in your user directory in the the XML file for the connection.  If you are saving passwords, make sure these files are secured by making them readable only for yourself and not for others.  These files can be found under your user directory under config/Databases/Connections. </li>
  
<li><b>Tested Drivers</b>
<p>NetBeans IDE 6.0 has been tested with the following databases and drivers.<br>
</p>
<table width="50%"  border="0" cellpadding="1">
  <tr>
    <th scope="col"><div align="left">Driver</div></th>
    <th scope="col"><div align="left">Version</div></th>
    <th scope="col"><div align="left">Example URL </div></th>
  </tr>
  <tr>
    <td>JavaDB</td>
    <td>Derby 10.3.1.4</td>
    <td><code>jdbc:derby://localhost:1527/sample</code>
    (Network)</td>
  </tr>
  <tr>
    <td>Oracle</td>
    <td>Oracle Database 10g Release 2 (10.2.0.3)</td>
    <td><code>jdbc:oracle:thin:@//localhost:1521:ora9i</code>
   </td>
  </tr>
  <tr>
   <td>PostgreSQL</td>
    <td>8.2 Build 506</td>
    <td><code>jdbc:postgresql://jbrave-pc1.sfbay.sun.com:5432/postgres</code></td>
  </tr>
  <tr>
    <td>MySQL</td>
    <td>MySQL Connector/J 5.0.7</td>
    <td><code>jdbc:mysql://localhost:3306/sample</code></td>
  </tr>
</table>
</li>
<li><b>Other Drivers</b>
<p>The following drivers and databases have not been formally tested, but should work based on experience.</p>
<table width="50%"  border="0" cellpadding="5">
  <tr>
    <th scope="col"><div align="left">Driver</div></th>
    <th scope="col"><div align="left">Version</div></th>
    <th scope="col"><div align="left">Example URL</div></th>
  </tr>
  <tr>
    <td>Microsoft </td>
    <td>Microsoft SQL Server 2005 JDBC Driver 1.1 </td>
    <td><code>jdbc:sqlserver://localhost:1433;databaseName=travel;selectMethod=cursor</code></td>
  </tr>
  <tr>
    <td> IBM</td>
    <td>Redistributable DB2 JDBC Type 4 driver v8 fixpack 13<br>
    </td>
    <td><code>jdbc:db2://localhost:50002/sample</code></td>
  </tr>
  <tr>
    <td> jTDS </td>
    <td>jTDS 1.2.1 </td>
    <td><code>jdbc:jtds:sqlserver://rave-cheetah.sfbay.sun.com:1433/travel</code></td>
  </tr>
  <tr>
    <td> DataDirect </td>
    <td>DataDirect Connect for JDBC - 3.6<br>
    DataDirect Connect for JDBC - 3.6.07</td>
    <td><code>jdbc:datadirect:oracle://localhost;SID=ora9i</code><br>
      <code>jdbc:datadirect:sqlserver://localhost:1433;DatabaseName=travel;SelectMethod=cursor</code><br>
    <code>jdbc:datadirect:db2://localhost:50002;databaseName=sample</code></td>
  </tr>
</table></li></ul>
<p>&nbsp; </p>
<p align="center"><a href="#top">top</a></p><br>      
<a name="known_issues-installer"></a>            
<h2>Known Issues: Installer </h2>            
        <p>The unresolved installer issues for this release are as follows: </p>
            
            <ul>
		
		               
                <li><a name="93568" id="93568"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=93568">Issue #93568: On Solaris and Linux, installation hangs when the network connection is lost.</a>
                    <blockquote>
                        <p><b>Description:</b> On Solaris and Linux platforms, if the network connection is lost, installation hangs when the installer is searching for a compatible JDK in network directories.</p>
                        <p><b>Workaround:</b> Restore the network connection and proceed with the installation.</p>
                  </blockquote>
              </li>
           
                    
                <li><a name="102781" id="102781"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=102781">Issue #102781: On Macintosh platforms, you might experience installation problems when using JDK 6.</a>
                    <blockquote>
                        <p><b>Description:</b> On Macintosh platforms, if you are using only JDK 6.0  you may experience some installation problems because this JDK version is not of FCS quality. The preferred JDK for the Mac OS is 1.5.0_07. </p>
                    </blockquote>
                </li>
				                <li><a name="117172" id="117172"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=117172">Issue #117172: A blank window when running the installer on  Ubuntu.</a>
                                  <blockquote>
                        <p><b>Description:</b> The installer appears as the blank/grey dialog when running on Ubuntu with Beryl/Compiz/Compiz Fusion <br>
                          installed. </p>
                   <p><b>Workaround:</b> Execute the <tt>export AWT_TOOLKIT=MToolkit</tt> command before running the installer.</p> 
                                  </blockquote>
              </li>
			     <li><a name="119861" id="119861"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=119861">Issue #119861</a>, <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=117334">Issue #117334</a>: Installation stops with error when the unpack200 command is executed.
                    <blockquote>
                        <p><b>Description:</b> Installation stops with error during execution of the unpack200 command. This error can be caused by the Logitech Process Monitor (Webcam Effects Helper) application. </p>
                        <p><b>Workaround:</b> If you have Logitech Process Monitor (Webcam Effects Helper) application (LVPrcSrv.exe) that is running on your system, switch it off before installation or  uninstallation.</p>
                    </blockquote>
              </li>
			   <li><a name="122030" id="122030"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=122030">Issue #122030</a>: On Fedora Core 8, installation fails when JDK 7 is used.
                    <blockquote>
                        <p><b>Description:</b> On Fedora Core 8, installation of GlassFish V2 fails when JDK 7 is used (JDK7 IcedTea 64-Bit Server VM). </p>
                        <p><b>Workaround:</b> For this platform, use JDK 5 or JDK 6.</p>
                </blockquote>
              </li>
 
 <li> NetBeans 6.0.1 offers an optional install of the GlassFish V2 Ur1 installer.
   <blockquote>
                        <p><b>Description:</b> 6.0.1 offers an optional install of  the GlassFish V2 Ur1 installer. 
If you have NetBeans 6.0 installed with the GlassFish V2 installer, this
will install V2 Ur1 in a dedicated directory. The GlassFish V2 Ur1 server does not appear under the Servers node in the Services window because an instance of the server is not registered in the IDE. </p>
                        <p><b>Workaround:</b> In addition to installing 
                          this server, in order to use it, you must add it to 
                          your Server dialog even though it is still a GlassFish V2 server type. From 
                          the Tools dropdown, select Servers &gt;Add Server &gt; GlassFish V2, click Next, and be sure to update the 
                          Platform Location to include the unique directory &quot;glassfish-v2-ur1&quot;
                          (e.g. c:\Program Files\glassfish-v2-ur1). If you have both GlassFish V2 
                          as well as GlassFish V2 Ur1 installed, when you create a project 
                          you will see the Server listed as &quot;GlassFish V2(1)&quot; as the second 
                        added GlassFish server. Otherwise it will read GlassFish V2.</p>
                        <p>Additionally, you can remove the GlassFish V2 server by using the NetBeans 6.0 uninstaller. Likewise, to remove the GlassFish V2 Ur1 server, use the NetBeans 6.0.1 uninstaller.</p>
    </blockquote>
              </li>
            <li> The NetBeans IDE 6.0.1 Download page can be displayed in the language
selected from the Choose Page Language drop-down list.</li>
            <blockquote>
              <p><b>Description:</b> The Download page is displayed in the language which is
  specified as default for the used browser. If you are using a non-localized
  browser, it will be displayed in English. To view the Download page in
  Chinese, Japanese, or Brazilian Portuguese, select the relevant language
  from the Choose Page Language drop-down list at the top of the Download page. <HTML>
              </p>
              <p><b>Workaround:</b>
              The localized Chinese, Japanese, and Brazilian Portuguese versions of the Firefox browser 
allow opening a localized Download page. To view the Download page in     Chinese, Japanese, or Brazilian Portuguese, select the relevant language from the Choose Page Language drop-down list at the top of the Download page.
              </p>
              </blockquote>
            </ul>
            <p align="center"><a href="#top">top</a></p><br>
                 

<a name="known_issues-core"></a>
<h2>Known Issues: Core IDE </h2>

        <p>The unresolved issues for this release are as follows: </p>       
            <ul>
                <!-- TEMPLATE FOR BUGS -->
                <!--
                    <li><a href="ADD ISSUE LINK HERE">Issue #ADD_ISSUE_NUMBER_HERE: ADD_ISSUE_TITLE_HERE.</a> 
                        <blockquote>
                            <p><b>Description:</b> ADD DESCRIPTION HERE.</p> 
                            <p><b>Workaround:</b> ADD WORKAROUND HERE.</p>
                        </blockquote>
                    </li>
                -->
                    
					
					<li><b>Difficulties starting the IDE (Solaris x86 and Dual-Core Opteron).</b> 
                        <blockquote>
                            <p><b>Description:</b> On certain Solaris x86 and Dual Core Opteron configurations, 
                            you may encounter problems starting the IDE due to a JDK bug with loading GTK <code>look&feel</code> libraries.</p> 
                            <p><b>Workaround: </b>If you encounter this behavior, specify the following command line option:
                                <tt>-laf javax.swing.plaf.metal.MetalLookAndFeel</tt>                          </p>
                      </blockquote>
                    </li>

                  <li><b>Characters do not display properly in some Asian locales.</b> 
                        <blockquote>
                            <p><b>Description:</b> When running the IDE with some Asian locales on Ubuntu 6.x and some other Linux distributions, 
                            the IDE's screen text may become unreadable. On certain Linux distributions multi-byte characters may display as 
                            a rectangle due to JDK font setting issues.</p>
                            <p><b>Workaround: </b>Because there is no known workaround for this issue, it is recommended to use 
                            an alternative Linux distribution if you must use a locale subject to this behavior. Note that this problem 
                            does not occur on Ubuntu 7.x, Red Hat Enterprise Linux 3. </p>
                        </blockquote>
              </li>
    
                    <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=64840">Issue #64840</a>: 
                    Network communication broken on Linux with IPv6 enabled.  
                    <blockquote>
                        <p><b>Description: </b>Network communication broken on Linux with IPv6 enabled, 
                        preventing the IDE from connecting to bundled servers, 
                        Auto Update, etc.</p>
                        <p><b>Workaround: </b>If this happens, run the IDE using the 
                        <code>-J-Djava.net.preferIPv4Stack=true'</code> switch. 
                        Alternatively, disable IPv6 (in <tt>/etc/modules.conf</tt> 
                        or <tt>/etc/modprobe.conf</tt>).</p>
			<p>For more information see:
                        <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5087907">Issue #5087907</a>.</p>
                    </blockquote>
                    </li> 
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=62919">Issue #62919</a>: 
                        Profiled application can crash when taking a memory snapshot.
                        <blockquote>
                            <p><b>Description:</b>When profiling an application, the profiled application 
                            may crash when you attempt to take a memory snapshot.</p>
                            <p><b>Workaround: </b>Start the application you want to profile with the <tt>-Xnoclassgc</tt> switch.</p>
                        </blockquote>
              </li>
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=110074">Issue #110074</a>: 
                        Editor periodically freezes on Solaris.
                        <blockquote>
                            <p><b>Description:</b> When running the IDE on Solaris with 
                                JDK 6, 6u1 or 6u2, threads may become blocked for a long time and
                                cause the editor to be unresponsive.</p>
                            <p><b>Workaround: </b>Upgrade your JDK 6 installation to Update 3 or newer.</p>
                        </blockquote>
              </li>
              
              <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=88776">Issue #88776</a>: 
                          Profiled application can crash when profiling using dynamic attach mode.
                        <blockquote>
                            <p><b>Description:</b>When running on JDK 1.6, 
                            profiling an application with dynamic attach mode can lead to the profiled application crashing.</p>
                            <p><b>Workaround: </b>Start the application you want to profile with the <tt>-Xshare:off</tt> switch.</p>
                            <p>Also see:
                        <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=113847">Issue #113847</a>.</p>
                        </blockquote>
              </li> 
           <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=88776">Issue #130790</a>: 
                          Editor does not display monospaced font in Ubuntu 8.
                        <blockquote>
                            <p><b>Description:</b> Due to the IDE's reliance on JDK and operating systems for correct fonts for monospace, fonts are not displayed as monospace in Ubuntu 8. This is an OpenJDK font-rendering issue. </p>
                            <p><b>Workaround: </b>Run the NetBeans IDE on Java SE 6 Update 5. </p>
                        </blockquote>
              </li> 
     		  	  
<li><a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6389282">JDK 6 Issue #6389282</a>: 
Java applications created from the Java Desktop Application project template might not run under Chinese and 
Japanese on Linux when using JDK 6.
            <blockquote>
                            <p><b>Description: </b>Java applications created from the 
                            Java Desktop Application project template might not be able to be run in 
                            Japanese and Chinese Linux locales with JDK 6 installed.</p>
                <p><b>Workaround: </b>Use JDK 5.0 or run projects from English locale.</p>
    </blockquote>
              </li>  
    </ul>
<p align="center"><a href="#top">top</a></p><br>



<a name="known_issues-web-java"></a>
<h2>Known Issues: Web and Java EE </h2>


        <p>The unresolved Web and Java EE issues for this release are as follows: </p>
    <ul>
	
	 <li><a name="backwards"></a>Visual Web JSF Backwards Compatibility Kit
				<blockquote><b>Description: </b>The Visual Web JSF Backwards Compatibility kit provides supplemental libraries that are required by the Visual Web designer to support projects that are based on J2SE 1.4 or J2EE 1.4. These libraries are not open source and are therefore distributed as a separate NetBeans plugin. The kit will install the following libraries that are required for J2EE 1.4 projects:
				<ul>
				<li>JavaServer Faces 1.1 Reference Implementation (RI)</li>
				<li> Rowset Reference Implementation (RI) </li>
				<li>JAX-RPC libraries from JWSDP 1.6</li>
				</ul></blockquote>

	   <p>To get the Backwards Compatibilty Kit, in the main menu, choose Tools &gt; Plugins. </p>
    </li>
	 
	 <li><a name="woodstock"></a>Woodstock 4.1 and 4.2 JSF Components Release Notes
				<blockquote><b>Description: </b>Woodstock 4.1 and 4.2 JSF Components Release Notes are located on the Project Woodstock 
				web site, at <a href="http://java.net/projects/woodstock/" target="_blank">http://java.net/projects/woodstock/</a>. The build shipped with NetBeans IDE 6.0.1 is build 11.
   </blockquote> </li>
				
	<li><a name="backwards"></a>No Support for Ajax Sample Components
	  <blockquote><b>Description: </b>Blue Prints Ajax Sample components are not supported in this release because they are based on a old version of Dojo that is no longer compatible with later versions. Woodstock components bundled in NetBeans depends on more recent versions of Dojo APIs for client side rendering. For most of the widely used BP Ajax components (supported in NetBeans 5.5), there is equivalent functionality available from Project woodstock as listed below. 
	  <ul>
	  <li>Auto Complete - This blog (http://blogs.sun.com/dmitry/entry/creating_autocomplete_entry_field_with ) describes how to acheive similar functionality with components from Project Woodstock library.</li>
<li>Pop up Calendar - Project Woodstock includes a Calendar component.</li>
<li>Select Value field - Use auto complete instead which has similar functionality but different UI.</li>
<li>Progress Bar - Project Woodstock includes a Progress Bar component.</li>
<li>Google Map - Planned for future.</li>
<li>Rating Component - Planned for future.</li>
<li>RichText Editor -  Not supported.</li>
	  </ul></blockquote>

	   <p>To get the Backwards Compatibilty Kit, in the main menu, choose Tools &gt; Plugins. </p>
    </li>






<li><a name="114951"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=114951">Issue #114951</a>: Repeated close/saveall of a project renders project unsaveable. 
                <blockquote>
                    <p><b>Description:</b> Intermittent error, in which the IDE does not write the file, and eventually returns Source File Errors. </p> 
                    <p><b>Workaround: </b>No workaround. </p>
                </blockquote>
    </li>

	
                <li><a name="114453"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=114453">Issue #114453</a>:  Deployment fails if NetBeans and GlassFish not running on same version of Java.
                <blockquote>
                    <p><b>Description:</b> If NetBeans is running on JDK 1.6.x then Glassfish must be running on JDK 1.6.x. If GlassFish is running on an earlier JDK, deployment fails with a <tt>java.lang.UnsupportedClassVersionError</tt>.</p> 
                    <p><b>Workaround: </b>No workaround. </p>
                </blockquote>
                </li>
<li><a name="113888"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=113888">Issue #113888</a>: Woodstock themes are incompatible with migration of projects from NetBeans IDE 5.5/5.5.1 to NetBeans 6.0.
This issue is related to <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=99063">Issue #99063</a>, Missing Body Element switching to new Woodstock theme.
  <blockquote>
                    <p><b>Description: </b>Projects with custom themes migrated to NetBeans IDE 6.0 will produce Missing Body Element errors.</p> 
                    <p><b>Workaround: </b>Manually switch to the default theme before migrating. 


 Custom themes will not work and will need to be rebuilt.</p>
  </blockquote>
    </li>
	
                <li><a name="92009"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=92009">Issue #92009</a>: Missing support for JSF from Entity classes. 
                <blockquote>
                    <p><b>Description:</b> It is not possible to use JSF Pages from the Entity Class wizard to generate JSF pages.</p> 
                    <p><b>Workaround: </b>No workaround. This functionality is currently unavailable in this release. </p>
                </blockquote>
                </li>
                 <li><a name="98577"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=98577">Issue 94193</a>: Not possible to edit bean properties 
                 in the Outline window or through source packages in the Projects window.
				<blockquote>
				<p><b>Description: </b>In NetBeans IDE 6.0, the Add Menu item is disabled in the Navigator window and there is
no functionality for editing the properties through source packages.</p>
                                    <p><b>Workaround: </b><ol><li>Double click SessionBean1 (or other java file) to open the bean in the Java editor.
<li>Manually add the property, such as <tt>private String CustomerId;</tt>.</li>
<li>Right click on the property and choose Generate Code.</li>
<li>From the Generate popup menu, select Getters and Setters.</li>
<li><p>In the Generate Getters And Setters dialog for SessionBean1, select your property and press OK.</p>
Public Getter and Setter methods are inserted after your property.</li>
</ol></p>
				</blockquote>
				</li>

         <a name="95022"></a>
          <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=95022">Issue #95022</a>: Resizing of textfield and other components does not work.
                       
                      <blockquote>
                          <p><b>Description: </b>Due to a change in Woodstock components, resize handles have been removed from the following Woodstock components: TextField, TextArea,PasswordField, DropDown and ListBox. This issue impacts especially projects imported from Java Studio Creator and NetBeans Visual Web Pack 5.5/5.5.1. Resized components may look different from how they looked in previous releases.</p>
                         <p><b>Workaround: </b>For TextField and TextArea components, use the columns and rows attributes, respectively. DropDown and ListBox components are automatically resized to the size of the longest item by the browser.</p>
                      </blockquote>
          </li>
          <li>When displayed in IE7, all button components may be rendered with an incorrect width.
            <blockquote>
                <p><b>Description: </b>When a button is placed using absolute positioning, its width is incorrect. For example, 
             when NetBeans IDE 6.0 uses absolute positioning to place components in Grid Layout Mode, this problem may occur.</p>
             <p>IE7 expects a value to be specified for the width of buttons. If a width attribute is not specified, the width is set 
             to <tt>width:auto</tt>, which results in the button's width being set to the entire available width of the button's container element. 
             For example, if the button style has <tt>left=130px</tt> then the button will start at 130px left and will expand to the width of 
             the <tt>&lt;body&gt; </tt>element. </p>
            <p><b>Workaround: </b> There are several different ways to solve this issue in NetBeans:</p>
            <ul>
                <li>Specify the width property for the button, or resize the button in the IDE to make the IDE assign a width to the button. </li>

                <li> In the IDE, drop the button into a Group Panel component to put the button inside a span tag. In this case there is no need to set the positioning as the 
                IDE sets the positioning for the Group Panel component. For example, the JSP code of a Button inside a Group Panel component may look like this:
<pre class="examplecode">&lt;webuijsf:panelGroup binding="#{Page1.groupPanel1}" id="groupPanel1" style="position: absolute; left: 240px; 
top: 168px"&gt;<br>    &lt;webuijsf:button binding="#{Page1.button1}" id="button1" text="Button"/&gt;
&lt;/webuijsf:panelGroup&gt;</pre>
                </li>
              </ul>
            </blockquote>
          </li>

        <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=106299">Issue #106299</a>: faces-config.xml of Visual Web JSF projects no longer contains the locale section, as in previous versions.
          <blockquote>
            <p><b>Description:</b> faces-config.xml used to have the commented section listing how to indicate other locales, with some lines for certain locales as an example.  Users must now   add these line manually, making sure the name of the locales of interest are in the supported locales 
              section. </p>
         

             <p><b>Workaround:  </b>Manually add the desired locale to the locale section  of the  faces.config.xml file. Here is an example of how the code should appear:</p>
			 <pre class="examplecode">&lt;application&gt;<br>       &lt;locale-config&gt;<br>           &lt;default-locale&gt;en&lt;/default-locale&gt;<br>           &lt;supported-locale&gt;<b>desired locale</b>&lt;/supported-locale&gt;<br>       &lt;/locale-config&gt;<br>   &lt;/application&gt;           
			 </pre>
             <p>See also <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=103085">Issue #103085</a></p>
         </blockquote>
      </li>

       
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=125965">Issue #125965</a>: Null Pointer Exception on drag and drop after closing a Visual Web project close .
          <blockquote>
            <p><b>Description:</b> When working with two Visual Web JSF projects, and when closing the second project and returning
            to the first, may yield an Null Pointer Exception for the first drag and drop. </p>
         

             <p><b>Workaround:  </b>Press refresh in designer and continue working.
             If this does not help, it is necessary to restart the IDE.</p>
			
    </blockquote>
      </li>

        
				
				
                
    </ul>
	      <p align="center"><a href="#top">top</a></p>
	  <br>
                <a name="known_issues-mobility"></a>
<h2>Known Issues: Mobility </h2>
        <br>
        <p> NetBeans 6.0 Mobility enables you to develop Java ME based applications for MIDP, CLDC and CDC devices. </p>
      <p>The unresolved Mobility issues for this release are as follows: </p>
      <ul>
        <li> MacOS, Solaris and other operating systems <a href="http://wiki.netbeans.org/wiki/view/FaqJ2MEOtherOpSys">are not supported</a>.
          <blockquote>
              <p><b>Description:</b> Mobility pack 6.0 and the Sun Java Wireless Toolkit 2.5.2 for CLDC  bundled with this 
		    release only support the Windows and Linux platforms.</p>
              <p><b>Workaround:</b> Users of  MacOS and other unsupported operating systems that want to use the Mobility pack can refer 
			  to the <a href="http://wiki.netbeans.org/wiki/view/MobilityFromZipToNB">instructions for installing zip distributions</a>.</p>
          </blockquote>
    </li>
	<li>Connected Device Configuration (CDC) application development requires the installation of a CDC platform emulator.
       <blockquote>
         <p><b>Description:</b> The Sun Java Toolkit 1.0 for CDC is not bundled with the 6.0 release as was the case with previous Mobility pack for CDC releases.</p>
           <p><strong>Workaround:</strong> <a href="http://java.sun.com/products/cdctoolkit/download-1_0.html">Download the Sun Java Toolkit 1.0 for CDC</a> 
		 from the Sun Developer Network. The NetBeans FAQ has instructions describing 
		<a href="http://wiki.netbeans.org/wiki/view/FaqMobilityCDCToolkitInstall">how to install and register 
		the CDC Toolkit in the IDE</a>.</p>
      </blockquote>
      </li>
      <li>End to End support not enabled with NetBeans 6.0 Mobility installation.
        <blockquote> 
          <p><b>Description: </b>Mobile applications can not be connected to an enterprise using the Mobility distribution of NetBeans 6.0.</p>
          <p><strong>Workaround:</strong> Install the Mobility End to End plugin.</p>
          <ol>
		<li>In the IDE's main menu go to Tools &gt; Plugins.</li>
		<li>In the Plugins dialog click the Available Plugins tab.</li>
		<li> In the Name column of the Available Plugins, find Mobility End to End.</li>
		<li>Check the box next to Mobility End to End and click Install.</li>
		<li>The NetBeans IDE Installer dialog shows the plugins about to be installed. If additional plugins are necessary, the IDE selects them automatically. Click Next.</li>
		<li>A license agreement may appear next. To enable End to End functionality, accept the license agreement and click Install.</li>
		</ol>
		<p>Note: You can also enable End to End functionality by installing the full distribution of NetBeans 6.0.</p>
        </blockquote>
      </li>
      <li>The Mobility pack will not run if a directory name, path to the 
                installation directory, or user directory contain non-ASCII characters. 
        <blockquote> 
          <p><b>Description: </b>The Sun Java Wireless Toolkit does not support non-ASCII 
            characters in project paths. </p>
          <p><strong>Workaround:</strong> Make sure that your user directory does not contain 
            non-ASCII characters. If it does, change the IDE's default 
            user directory.</p>
        </blockquote>
      </li>
      <li>Generating a web service client from WSDL with &quot;complex&quot; classes generates incomplete and uncompilable  code.
	    <blockquote> 
          <p><b>Description: </b>IDE creates classes that are unable to compile when generating a web service client with complex classes.</p>
          <p><strong>Workaround:</strong> Make the QNames of the first level element names unique. For example, change them to return1, return2, etc. </p>
        </blockquote>
      </li>

      <li><a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6389282">JDK 6 Issue #6389282</a>: Chinese and Japanese Linux locales with JDK 6 may fail to run projects.
                <blockquote> 
        <p><b>Description: </b>Mobile application projects created in NetBeans can not be run in  Japanese and Chinese Linux locales with JDK 6 installed. </p>
        <p><strong>Workaround:</strong>  Use JDK 5.0 or run projects from  English locale. </p>
        </blockquote>
      </li>
	  </ul>
      <p align="center"><a href="#top">top</a></p>
	  <br>
<a name="known_issues-uml"></a>
<h2>Known Issues: UML </h2>
<br>
<p> NetBeans 6.0 UML lets you explore and evaluate the UML functionality in the IDE. We encourage you to get involved and give us feedback by logging any issues you encounter in the Issue Tracking system at <a href="https://netbeans.org/community/issues.html">https://netbeans.org/community/issues.html</a>.</p>

      <p><b>Note:</b> NetBeans 6.0 UML is currently not supported on the Macintosh OS X platform. UML is available for the Macintosh OS X platform via the NetBeans Plugin Manager. Please see the NetBeans wiki for UML Mac issues, <a href="http://wiki.netbeans.org/wiki/view/UMLMacIssues">http://wiki.netbeans.org/wiki/view/UMLMacIssues</a> to get more information about the known Macintosh OS X issues and workarounds.</p>
      <blockquote>
        <p><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=123102">Issue #123102</a>: Non ASCII characters might display incorrectly after code generation, in some cases </p>
        <blockquote>
          <p><b>Description: </b>UML code generation uses default system encoding instead of the encoding of the java project and this can mean non ASCII characters might not be seen and processed correctly if the java project encoding is not the same as the encoding of the locale in which the user is running the NetBeans IDE.<br>
            <br>
            <b>Workaround:</b> Before adding files or code to the Java project, or generating the code using UML functionality, change the Java project encoding property to that of the default encoding for the locale in which the NetBeans IDE has been started if they are not the same. <br>
            <br>
    For example, when the NetBeans IDE starts, the default project encoding is utf-8. But if the encoding of the locale the user is in is not utf-8 (as would be the case on the Windows platform ), then you must change the Java project encoding to that of the default encoding of that locale. </p>
        </blockquote>
    </blockquote>
      <p align="center"><a href="#top">top</a></p><br>

<a name="known_issues-soa"></a>
<h2>Known Issues: SOA</h2>
<br>
    <p>This NetBeans SOA 6.0 release lets you explore and evaluate new functionality in the IDE. We encourage you to get involved and give us feedback by logging any issues you encounter in the Issue Tracking system at <a href="https://netbeans.org/community/issues.html">https://netbeans.org/community/issues.html</a>.</p>

    <p>The unresolved SOA issues for this release are as follows: </p>
	
     <ul>
	 <li>To use the Sun Java System Access Manager, you must install the full download of the IDE, and install 


 Java Application Platform SDK Update 3 Beta

or later from
  <a href="http://java.sun.com/javaee/downloads/index.jsp">http://java.sun.com/javaee/downloads/index.jsp</a>. For more information about the steps required to install the Access Manager, see
  <a href="https://netbeans.org/kb/archive/index.html">Installing the Sun Java System Access Manager</a>. <i>(Archived 6.0 JavaEE document: identity-amsecurity.html)</i></li>
	 <li><a name="114174"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=114174">Issue #114174</a>: WSDL files manually edited by CASA throw Null Pointer Exception in the build.xml output.
    <blockquote>
    <p><b>Description: </b>CASA does not support user editing of its generated files, and provides no warning when a user does so.</p>
    <p> <b>Workaround: </b>Do not edit CASA-generated WSDL files. Manual editing of WSDL file is not supported and will cause unexpected results.</p>
    </blockquote>
    </li>	
	<li><a name="114171"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=114171">Issue #114171</a>: Manually edited WSDL files generated by CASA throw Illegal State Exceptions.
    <blockquote>

    <p><b>Description: </b>If the user manually introduces errors into a WSDL files by CASA, the IDE throws Illegal State Exceptions.</p>
    <p> <b>Workaround:</b>It is best not to edit CASA-generated documents manually.</p>
    </blockquote>
    </li>
	
	<li><a name="110218"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=110218">Issue #110218</a>: Slower machines with smaller amounts of RAM encounter synchronization problems with CASA.
    <blockquote>

    <p><b>Description: </b>The IDE throws NPE and IllegalState exceptions on slower machines with smaller amounts of RAM </p>
    <p> <b>Workaround:</b>If prompted to reload the WSDL file, do not.</p>
    </blockquote>
    </li>
	
	<li><a name="84622"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=84622">Issue #84622</a>: IDE does not roll back the retrieval of the WSDL file(s) after you cancel the PartnerLink dialog.
    <blockquote>
    <p><b>Description: </b>If you cancel the PartnerLink dialog that appears when you drag a WSDL file or a Web Service node from a NetBeans project onto a diagram, the IDE does not roll back the retrieval of the WSDL files(s).</p>

    <p> <b>Workaround:</b> If these files are not needed by the project, simply delete them manually from the Projects window, as you would delete any other project resource.</p>
    </blockquote>
    </li>
	<li><a name="112344" id="112344"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=112344">Issue #112344</a>:   Drag and Drop in the tree view of XML schema editor may throw exceptions.    
	  <blockquote>
    <p><b>Workaround:</b> Use JDK 1.6.0_02 or later.</p>
    </blockquote>
    </li>
	
	<li><a name="121834" id="121834"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=121834">Issue #121834</a>: I18N - A composite application that contains a module project whose name has multibyte characters (i.e., non-ascii) cannot be deployed.
	  <blockquote>
    <p><b>Workaround:</b> Use ascii characters in module project names.</p>
    </blockquote>
    </li>
	   <li><a name="96237" id="96237"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=96237">Issue #96237</a>: The XSLT Designer does not support messages defined on complex, simple, or built-in types.
	     <blockquote>
    <p><b>Description:</b> In this release, the XSLT   Designer does not support  messages declared in WSDL using the <tt>type="..."</tt> attribute. Only the declarations with the <tt>element="..."</tt> attribute are supported. </p>
    </blockquote>
    </li>
	    <li><a name="113389"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=113389">Issue #113389</a>: The XSLT Service Engine does not support the execution of  XSLT services that are of the Service Bridge service type.
    <blockquote>
    <p><b>Description:</b> In this release, the XSLT Service Engine does not support the execution of XSLT services that are of the Service Bridge service type.</p>

    <p><b>Workaround:</b> Install the latest version of the XSLT Service Engine and the Transform shared library:</p>
	<ol>
		<li>
		Download the <a href="http://download.java.net/jbi/binaries/open-jbi-components/main/patches/Build070914_2/xsltpatch/xslt.zip">XSLT Patch</a>.		</li>
		<li>Unzip the files containing the installer jars to a local folder.</li>
		<li>In the Services window, start the GlassFish V2 Application Server.</li>
		<li>Expand the <tt>Servers &gt; GlassFish V2 &gt; JBI &gt; Service Engines</tt> node.</li>
		<li>Right-click <tt>sun-xslt-engine</tt> and select Uninstall.</li>
		<li>Expand the <tt>Servers &gt; GlassFish V2 &gt; JBI &gt; Shared Libraries</tt> node.</li>
		<li>Right-click <tt>sun-transform-library</tt> and select Uninstall.</li>
		<li>
		Right-click the Shared Libraries node and select Install New Shared Library.
		<br>
		Navigate to the local folder containing the downloaded installation jars, select <tt>transformlib.jar</tt>, and select Install.		</li>
		<li>
		Right-click the Service Engines node and select Install New Service Engine.
		<br>
		Navigate to the local folder containing the downloaded installation jars, select <tt>xsltserviceengine.jar</tt>, and select Install.		</li>
	</ol>
    </blockquote>
    </li>
    </ul>
     <p align="center"><a href="#top">top</a></p>
<br>        


       
<a name="known_issues-cnd"></a>
<h2>Known Issues: C/C++</h2>
<br>
<p>NetBeans 6.0 C/C++ support C and C++ applications on
Microsoft Windows, Macintosh OS X, Linux, and the
Solaris<small><sup>TM</sup></small> Operating System. C/C++ developers can
bring existing applications into the NetBeans project system, or develop new
applications and libraries. NetBeans C/C++ support covers the end-to-end
development cycle: projects and templates, an advanced language-aware editor,
makefile-based builds, and debugging.</p>
<p>For information on installing and configuring the compilers and tools for
NetBeans C/C++ support, see <a href="cpp-setup-instructions.html">Installing and
Configuring C/C++ Support</a>.
</p>
<p>The unresolved C/C++ issues for this release are as follows:
<ul>
<!-- <li>C/C++ support has been fully tested on Microsoft Windows 2000 and Windows 
XP. Testing on Windows Vista is ongoing and is yet incomplete.</li>
-->
<li>
<blockquote>
Many users of MinGW tools on the Windows platform encounter problems because
they use the <tt>mingw32-make</tt> utility from the MinGW distribution. While this make
tool seems like the right choice, it actually breaks builds because it is a
non-POSIX implementation of the UNIX&reg; <tt>make</tt> utility and does not
work well. For this reason, MinGW renamed the utility and created an 
<a href="http://www.mingw.org/mingwfaq.shtml#faq-mingw32-make.ex">FAQ</a> 
explaining why you should not use it, and should instead use the <tt>make</tt>
utility from the MSYS distribution.
</blockquote>
</li>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=121776">Issue #
121776</a>: Sun Studio compiled code sometimes has problems being debugged with gdb
<blockquote>
<p><b>Description: </b>On the Solaris and Linux operating systems, code 
compiled with the Sun Studio compilers cannot always be correctly debugged
with the gdb debugger. Most known problems are fixed in the Sun Studio 12 software but 
several more exist. If you run into problems
debugging programs compiled with Sun Studio 12 compilers, the first thing you 
should do is apply the latest Sun Studio 12 product patches. If your problem 
still exists, please file a defect in Issuezilla and make this task
depend on it.
</p>
<p>
As problems are found, we will open new issues and update this task to 
depend on them, giving some idea of the current state of debugging programs 
compiled with Sun Studio 
12 compilers using NetBeans and the gdb debugger.
</p>
<p>These problems do not affect debugging code compiled with Sun Studio 12 
compilers using the Sun Studio 12 IDE and the dbx debugger.
</blockquote>
</li>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=121775">Issue
#121775</a>: Need latest Xcode for debugging on Tiger (Mac OS X 10.4)
<blockquote>
<p><b>Description: </b>When debugging on the Macintosh with Tiger (Mac OS
X 10.4), the 
default version of the gcc and g++ compilers generates
code with a bug in the debug output. Apple has released an updated Xcode package  
(version 2.5) with a fix for this problem. The correct versions of gcc, g++, 
and gdb are:
<br><br>
    gcc: 4.0.1  - Apple build 5367<br>
    g++: 4.0.1  - Apple build 5367<br>
    gdb: 6.3.50 - Apple build 573 (10/20/2006)
<br>
<p>
To download this version of Xcode, see 
<a
href="http://developer.apple.com/tools/download">
<tt>http://developer.apple.com/tools/download</tt></a>.
</p>
<p>
This problem is not an issue on Leopard (Mac OS X 10.5).
</p>
The symptoms of the problem are that executables compiled with the
<tt>-gdwarf</tt> flag (the default for C/C++ application projects) have 
incorrect line information and breakpoints may be ignored.
</p>
</blockquote>
</li>
</ul>
<p align="center"><a href="#top">top</a></p><br>


      <a name="more_info"></a>
      <h2>More Information</h2>
      <br>
      <p>You can find news, articles, additional modules, and other useful information on the NetBeans project web site.
            Since NetBeans is an open-source project, the web site also provides access to source code, a bug database, information on 
            creating your own NetBeans modules, and much more. For more information, visit 
      <a href="https://netbeans.org/">http://www.netbeans.org</a>. </p>

      <h4>Documentation</h4>
      <p>To get the most out of the new functionality in NetBeans IDE 6.0, check out the 
            continuing series of web-based tutorials and flash videos. Keep checking these pages,
      as we are adding new content all the time.</p>
      <ul>
          <li><a href="https://netbeans.org/kb/archive/index.html">NetBeans IDE 6.0 Tutorials and Videos</a> <i>(Archived)</i>
      </ul>
            
      <p>The built-in help system for NetBeans IDE 6.0 has not been updated to reflect the changes
            in the user interface since release 5.5. The built-in help system will be updated in time 
      for FCS.</p>
            
      <br>
      <div class='greybox'>
          <p><b>Note: </b>If you are running the NetBeans IDE on Mac OS X, see <a href="../../../kb/articles/mac.html"> Using
                NetBeans on Mac OS X</a> for more information about keyboard equivalents,
          tips and tricks, and other Mac-specific topics. </p>
      </div>
            
      <h4>Community</h4>
      <p>You can also keep up to date on NetBeans IDE and interact with the NetBeans community
      by signing up for NetBeans project mailing lists  at <a href="../../lists/index.html">https://netbeans.org/community/lists/</a>.</p>
        
<br style="clear:both;">
        
      <p align="center"><a href="#top">top</a></p><br>
<!-- End Content Area -->
    </body>
</html>

