<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>NetBeans IDE 6.1 Release Notes and System Requirements</title>
   <meta name="description" content="NetBeans IDE 6.1 Release Notes: System Requirements, Compatibility, Known Issues, Documentation">
<link rel="stylesheet" type="text/css" href="/netbeans.css" media="screen"></head>
<body>
   <a name="top"></a>
   <h1>NetBeans IDE 6.1  Release Notes </h1>
<div class="articledate" style="margin-left: 0px;">Last updated:  <!-- #BeginDate format:Am1 -->August 9, 2012<!-- #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.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-websvc">Known Issues: Web Services</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.1</h2>
   <p>NetBeans IDE 6.1 is a significant update to NetBeans IDE 6.0 and
   includes the following changes:</p>
   <ul>
      <li>JavaScript support. </li>
        <li> Spring Framework Support.</li>
        <li>New MySQL support in Database Explorer. This feature allows you to register a MySQL Server, view databases, view, create, and delete databases, easily create and open connections to these databases, and to launch the administration tool for MySQL. This also allows you to easily create NetBeans sample databases so that following tutorials, blogs, and so on is significantly easier.</li>
      <li>Support for Java Beans. You can now view Java Bean patterns in the Navigator and BeanInfo Editor. </li>
      <li>JSF CRUD Generator. With this feature, you can generate a JavaServer Faces CRUD application from JPA entity classes. </li>
      <li> Javadoc Code Completion. Editing of javadoc comments is more convenient with code completion.</li>
      <li>Shareability of projects. This new feature in Java SE, Java Web, and all Java EE project types allows you to create projects that share definitions of libraries. That in turn allows you to create self-contained projects or sets of projects that can easily be built from the command line, on continuous integration servers, and by users of other IDEs without problems.</li>
      <li>Existing infrastructure has been enhanced to support window transparency (on platforms that provide it).</li>
      <li>Javadoc and sources association. Now any JAR item on the project classpath can be associated with its Javadoc and sources too.</li>
      <li> Inspect Members and Hierarchy Windows. Inspect Members and Hierarchy actions now work when the caret in the Java Editor is on a Java class for which there is no source available.</li>
      <li>On Demand Binding Attribute for Visual Web JSF projects.</li>
      
      
      <li>Axis2 support for web services. </li>
      <li>SOAP UI integration for Web Service testing and monitoring.</li>
      
      <li>The integration of the December 2007 through March 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>.</li>
   </ul>
<p>For information about the main development features in NetBeans IDE,
   see the <a href="index.html">NetBeans IDE 6.1 Information</a> page.</p>
   
   
   <a name="supported_technologies"></a>
   <h2>Supported Technologies</h2>
   <br>
   <p>NetBeans IDE 6.1 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>  Websphere 6.1</li>
         <li>WebLogic 9.2</li>
         <li>WebLogic 10</li>
      </ul>
</div>
   <br style="clear:both;" />
   <br>
   
  
      <p class="notes"><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.1.</p>

   
   
   
   <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 class="notes"><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>
   
      <p class="notes"><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>
   
   
   <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 14 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/javase/downloads/index.jsp</a></li>
      <li><b>Windows</b>: <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a></li>
      <li><b>Linux</b>: <a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</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 class="notes"><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 previous versions of NetBeans IDE. If you choose not to import settings from a previous
   release, the IDE opens using the default settings.</p>
   
   <blockquote>
      <p class="notes"><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 class="notes"><b>Note:</b> If you edit the Project Properties in NetBeans IDE 6.1 
         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 the database functionality in NetBeans 6.1. They are as follows: </p>
   <ul><li><strong>Java DB Database Server moved to Services window.</strong> In previous versions of the IDE, the Java DB Database Server was administered from Tools in the main menu. In NetBeans IDE 6.1, creating, deleting, and other database administration is done using the Java DB node in the Services window.</li>
      <li><b>Visual Query Editor</b>. The Visual Query Editor has been removed from the Database Explorer and is now available only as part of the visual web framework.</li>
      <li><strong>Additional MySQL Support added. NetBeans IDE 6.1 features more support for MySQL.</strong> Using the MySQL node in the Services window, you can now start and stop a MySQL server, as well as access the MySQL administration tool. It is also easier to manipulate MySQL databases in NetBeans IDE 6.1.</li>
      <li><b>Upgraded Drivers.</b> PostgreSQL and MySQL drivers included in NeBeans IDE have been updated. The PostgreSQL driver version is now 8.3-603; the MySQL driver version is 5.1.5.</li>
      <li><strong>SQL Editor: New 'Delimiter' Directive.</strong> The new 'delimiter' directive in the SQL editor allows you to execute stored procedures and triggers and other multi-statement blocks. In the past this didn't work because the SQL Editor would incorrectly split the procedure into multiple semicolon-delimited statements and try to execute them separately. You can avoid this problem by using the 'delimiter' directive to set the delimiter to something other than semicolon.  For example:
      <pre class="examplecode">delimiter ??
create procedure test()
begin
declare x tinyint;
select count(*) from person into x;
if x = 2
then
  select * from trip;
end if;
end??
delimiter ;
call test(); </pre></li>
      
      <li><b>Tested Drivers</b>
        <p>NetBeans IDE 6.1 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.3 Build 603</td>
             <td><code>jdbc:postgresql://jbrave-pc1.sfbay.sun.com:5432/postgres</code></td>
          </tr>
          <tr>
            <td>MySQL</td>
             <td>MySQL Connector/J 5.1.5</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 uninstall.</p>
       </blockquote>
     </li>
    </li>
     <li>On MacOS the installer freezes during installation when the unpack200 command is executed.
       <blockquote>
           <p><b>Description:</b> The installer freezes during installation and the following error is reported:</p>
           <code>Unable to find unpack200</code>
         <p><b>Workaround: </b>Make a symlink named <code>unpack200</code> that points to <code>/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/bin/unpack200</code>. Note that the symlink must be placed in a folder in the <code>unpack200</code> path. For example, in the path shown above, the <code>bin</code> folder is a good location.</p>
       </blockquote>
     </li>
     <li><a name="122030" id="122030"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=122030">Issue #122030</a>, <a name="130368"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=130368">Issue #130368</a>: On Fedora  8 and 
       Ubuntu 8.04 alpha 6, installation fails when JDK 7 is used.
       <blockquote>
           <p><b>Description:</b> On Fedora  8 and Ubuntu 8.04 alpha 6, installation of GlassFish V2 fails when JDK 7 is used (JDK7 IcedTea 64-Bit Server VM). </p>
         <p><b>Workaround:</b> For these platforms, use JDK 5 or JDK 6.</p>
       </blockquote>
     </li>
     <li>The NetBeans IDE 6.1 Download page can be displayed in the language
       selected from the Choose Page Language drop-down list.
     <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></li>
	   <li>The NetBeans IDE 6.1 installation wizard does not start properly (hangs). After the user stops  the installation process manually, and the installer reports that another installer instance is running.  
	     <p><b>Description:</b> On Windows, when Java6 is used by default and large zip files are stored on the desktop, the installation wizard does not start properly (hangs). After the user stops  the installation process manually, and the installer reports that another installer instance is running.	     </p>
         <p><b>Workaround:</b> Before the installation, remove all big zip files from the desktop</p>
	   </li>
</ul>
<p align="center"><a href="#top">top</a></p><br>
       
         
         
         <a name="known_issues-core"></a>
           </p>
    
   <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  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><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. </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="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>
      
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=119617">Issue #119617</a>:
         Cursor lost in editor and cannot type using keyboard
         <blockquote>
            <p><b>Description:</b> It can sometimes occur that after using a hint in the editor window
            that the insertion point in the editor disappears and you cannot type using the keyboard.
            This has mostly been reported on Mac OS X 10.4, but there have been some reports on some versions of Ubuntu.            </p>
            <p><b>Workaround: </b>Use the mouse to open and then close a dialog window (for example, a properties dialog).
            This returns the focus to the editor and the insertion point and keyboard will work as normal.</p>
         </blockquote>
      </li>
       <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=119567">Issue #119567</a>:
         Desktop database application project does not run if non-ASCII is in the name of the project or the path to that project.
         <blockquote>
            <p><b>Description:</b> The cause is in the current toplink libraries used in the IDE.
An <a href="http://glassfish.dev.java.net/issues/show_bug.cgi?id=3827 ">issue on toplink library</a> has been filed on it. This Glassfish issue has been fixed for Glassfish v2.1. However, NetBeans 6.1 supports glassfish v2 u2, and the fix is not in this version of Glassfish.</p>
            <p><b>Workaround: </b>Use only ASCII characters in the name of a desktop database application project or the path to that project.</p>
         </blockquote>
      </li>
   
   <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=118174">Issue #118174</a> and other related issues: I18N - Javadoc not found on Solaris, maybe other platforms, in certain cases using the Firefox
     web brower
       <blockquote>
        <p><b> Description: </b> When using Firefox on Solaris, and sometimes on Mac OS and Windows, if multibyte or non-ascii characters are used in project name or path, and if the project encoding property is not set to <tt>utf-8</tt> (which means these paths are in that encoding), the generated javadoc is not found or shown.</p>
        <p>For example: In the case of a project that has <tt>euc-jp</tt> as its project encoding property on Solaris, and has project name or path using Japanese characters of that encoding, the javadoc won't be found and an error message 
         is displayed in Firefox.</p>
        <p>The problem is that part of the URL is <tt>UTF-8</tt> and part is <tt>EUC-JP</tt>; the
          javadoc tool stores the URL in the encoding it
          generates for the web page, but the correct way is to generate the text in
         requested encoding (in this case <tt>EUC-JP</tt>) and URLs in <tt>UTF-8</tt>.</p>
        <p><b>Workaround: </b>Avoid using multibyte in the name of the project or the path to the project.</p>
     </blockquote>
</li>
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=130357">Issue #130357</a>: I18N - Mac OS won't generate javadoc if project name or path has multibyte
        <blockquote>
        <p><b> Description: </b>The javadoc task while creating the temporary parameter file is written in default OS encoding which is MacRoman.
          This appears to be a Mac OS situation where the BSD and Mach parts (system &amp; kernel calls) accept parameters in UTF-8, 
          but OS and HFS promote themselves as MacRoman.</p>
        <p><b>Workaround: </b>Avoid using multibyte in the name of the project or the path to the project.</p>
        </blockquote>
      </li>
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=130311">Issue #130311</a>: On Mac OS, some messages or strings in another language or character set are not shown in output window correctly
        <blockquote>
        <p><b> Description: </b>For example, on Mac OS X 10.4. when using <tt>System.out.println</tt> in the Java code,the strings containing Japanese characters display correctly in the source code, but are displayed as question marks in the output window.</p>
        <p><b>Workaround: </b>There is no workaround at this time.</p>
        </blockquote>
     </li>
     <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=130245">Issue #130245</a>: I18N - Mac OS: A Mercurial (hg) repository cannot be created  from a project if multibyte is in path to the project on a Mac using 10.4.x.
       <blockquote>
        <p><b> Description: </b>An error message is displayed in the Output window or Terminal after trying to create the repository.</p>
        <p class="notes"><b>Note: </b> This problem does not occur on Mac 10.5 with Mercurial 1.0 or
Mercurial 0.9.5. The problem occurs on Mac 10.4 with Mercurial 0.9.5 (Mercurial 1.0 is currently not available for Mac 10.4).</p>
 <p><b>Workaround: </b>Create A Mercurial repository from command line by using the command 
   <tt>hg init &lt;DirectoryName&gt;</tt>.</p>
       </blockquote>
     </li>
<li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=133893">Issue #133893</a>: Refactoring(Rename) fails with <tt>ClassCastException</tt>
    <blockquote>
        <p><b> Description: </b>While refactoring (removing, renaming, etc.) a Java class, the refactoring dialog displays the following error: &quot;Module Spring Beans threw java.lang.ClassCastException: org.netbeans.editor.ext.ExtSyntaxSupport&quot;. This happens especially in a web project which was extended by the Spring Web MVC framework. </p>
        
 <p><b>Workaround: </b>Right-click the project node in the Projects view and click Properties. In the Project Properties dialog, select the Spring Framework category. In the Configuration Files tab, remove the web/WEB-INF/jsp/index.jsp file and click OK.    
    </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>
            <p>To get the Backwards Compatibility Kit, in the main menu, choose Tools &gt; Plugins. </p>
         </blockquote>
         
         
      </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.1 is Woodstock 4.2 Build 3.</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 achieve 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>
         
      </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.1.
         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.1 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="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.1, 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 text field 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, Text Area,Password Field, Drop Down and List Box. 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 Text Area components, use the columns and rows attributes, respectively. Drop Down and List Box have been enhanced to include a new width property. </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.1  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-websvc"></a>
   <h2>Known Issues: Web Services</h2>
   <p>NetBeans 6.1 Web Services enables you to develop SOAP and RESTful services and clients. JAX-WS (Metro), REST (Jersey),  Axis2, and JAX-RPC architectures are supported. </p>
   <p>The unresolved Web Services issues for this release are as follows:</p>
   <ul>
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=129077">Issue #129077</a>: Dragging and Dropping Facebook Service to a Servlet or Resource Class
         <blockquote><p><b>Description:</b> There are compilation issues with <tt>/src/org.netbeans.saas.facebook.FacebookService.java</tt> and <tt>/src/org.netbeans.saas.facebook.FacebookService.java</tt>. In addition, the <tt>Callback</tt> servlet class is missing, and so is its registration in <tt>web.xml</tt>.</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.1 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> Mac OS, Solaris and other operating systems <a href="http://wiki.netbeans.org/wiki/view/FaqJ2MEOtherOpSys">are not supported</a> by MIDP emulator platforms.
         <blockquote>
            <p><b>Description:</b> NetBeans 6.1 Mobility  and Sun Java Wireless Toolkit 2.5.2 bundled with this release only support Windows and Linux platforms.</p>
            <p><b>Workaround:</b> Mac OS users can download the <a href="http://mpowerplayer.com/">MPowerplayer</a> to develop mobile applications. The FAQ has <a href="http://wiki.netbeans.org/FaqMobilityMpowerMacOs">instructions for installing Mpowerplayer in the IDE</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.1 release.</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 <a href="../../../kb/docs/javame/cdcemulator-setup.html">NetBeans CDC Emulator Platform Setup Guide</a> has instructions for installing this and other SDKs for CDC development.</p>
         </blockquote>
      </li>
      <li>End to End support not enabled with NetBeans 6.1 Mobility installation.
         <blockquote>
            <p><b>Description: </b>Mobile applications can not be connected to an enterprise using the Mobility distribution of NetBeans 6.1.</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 class="notes"><b>Note: </b>You can also enable End to End functionality by installing the full distribution of NetBeans 6.1. </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><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.1 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 class="notes"><b>Note:</b> NetBeans 6.1 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 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.1 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 style="" href="../../../kb/68/javaee/identity-amsecurity.html#install">Installing the Sun Java System Access Manager</a>.--></li>
      <li><a name="114171"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=114171">Issue #114171</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="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="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="132274" id="132274"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=132274">Issue #132274</a>: WSDL from database wizard throws an exception and creates
    incorrect wsdl file on Solaris in Japanese locale (<code>euc-jp</code>) .
         <blockquote>
            <p><b>Description:</b> Sometimes,  on completion of using File > New WSDL from database wizard, there is an exception and  an incorrect wsdl file with an
empty source view is created.   This happens when running if <code>Solaris ja</code> (<code>euc-jp</code>) locale;
It might happen in a similar locale on Linux or MacOS and might even happen using other Unix non-utf8 locales on Solaris.  It does not happen on Windows.  It also does not happen when running in <code>solaris ja utf-8</code> or other <code>utf-8</code> locales. </p>
            <p><b>Workaround: </b> Running NetBeans in <code>utf-8 ja</code> or other <code>utf-8</code> locales  can partially solve the problem, but the means user will need to change existing files that were created or imported  in  <code>euc-jp</code> encoding to use
              <code>utf-8</code> encoding. Otherwise, the user might not be able to see properly some characters.
For example, the issue does not happen if user is running NetBeans while in the <code>Solaris ja_JP.UTF-8</code> locale. </p>
        </blockquote>
     </li>
	 <li><a name="133136" id="133136"></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=133136">Issue #133136</a>: The IDE is unresponsive for a long period of time after formatting  the xml schema code.
         <blockquote>
            <p><b>Description:</b> After performing format of a large xml schema file, the next action in the IDE will cause it to hang for a long time. It can take more than 10 minutes for the IDE to come back to the normal state. </p>
       <p><b>Workaround: </b>Usually you just have to wait. <br>
  </blockquote>
  </li>
   <li><a name="132544 " id="132544 "></a><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=133136">Issue #132544 </a>: Deployment fails if the application server has not been previously started.  </li>
</ul>
   <ul>
     <blockquote>
       <p><b>Description:</b> The deployment process tends to fail when a user tries  to re-deploy an application without having previously started the application server. </p>
      <p><b>Workaround: </b> Start the application server, undeploy and deploy the application.       </blockquote>
   </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.1  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="../60/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><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=131946">Issue
      131946</a>: Get a warning when trying to edit C files
      <blockquote>
      <p><b>Description: </b>When you import settings from a NetBeans IDE 6.0-based
      user directory to a NetBeans IDE 6.1-based user directory, you might
      encounter problems such as not being able to edit source files. To avoid
      such problems, do not import settings when you start using NetBeans
      IDE 6.1 so that you start with a new user directory.
      </p>
      </blockquote>
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=132884">Issue
      132946</a>: Null pointer exception when opening project created with a 
      later version of NetBeans IDE.
      <blockquote>
      <p><b>Description: </b>When you open a project created with a later
      version of the NetBeans IDE, you might get a null pointer exception. If
      this situation occurs, exit and restart the IDE, and then open the
      project.
      </p>
      </blockquote>
      <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=132203">Issue
      132203</a>: Cancelling process does not kill running process
      <blockquote>
      <p><b>Description: </b>When you try to cancel a running project by
      right-clicking the progress bar in the lower right corner of the NetBeans
      IDE and choosing Cancel process, the progress bar disappears but the
      process continues running. 
      </p>
      </blockquote>
      <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.1, 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="../../../kb/index.html">NetBeans IDE Documentation</a></li>
   </ul>
   
   <p>The built-in help system for NetBeans IDE 6.1  has  been updated to reflect the changes
   in the user interface since release 5.5. </p>
   
   <br>
 
      <p class="notes"><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>
   
   
   <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 class="align-center"><a href="#top">top</a></p><br>
   
</body>
</html>
