<DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> 
<title>NetBeans 5.5 Visual Web Pack Installation Guide</title>

<meta name="description" content="This guide provides information for installing and configuring NetBeans Visual Web Pack 5.5.">
<meta name="keywords" content="VWP, VWP installer, Java Studio Creator"> 

<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<style type="text/css">
<!--
.style2 {color: #FF0000}
-->
</style>
</head>
<body>
<!-- Begin Content Area -->
 <a name=top></a>
<h1>NetBeans Visual Web Pack 5.5 Installation Instructions</h1>
<!-- <p>Last Updated: October 2006</p> -->
<p>The NetBeans Visual Web Pack 5.5 provides an environment for rapidly building web applications with Ajax-enabled JavaServer Faces components, support for drag-and-drop binding to data sources, and more. </p>
<p><b>Contents</b></p>
<ul>
  <li><a href="#impnotes"> Important Notes </a></li>
  <li><a href="#prerequisites" title="Prerequisites">Prerequisites</a> </li>
  <li> <a href="#installation" title="Installing the Software">Installing the Software</a></li>
  <!-- <li><a href="#upgrade" title="Upgrading">Upgrading from NetBeans Visual Web Pack 5.5 to Visual Web Pack 5.5.1</a></li> -->
<li> <a href="#configinfo" title="Configuration Information">Configuration Information</a> </li>
  <li> <a href="#uninstallation" title="Uninstalling the Software">Uninstalling the Software</a> </li>
  <li> <a href="#troubleshoot" title="Troubleshooting">Troubleshooting</a> </li>
</ul>
<p><b>Note:</b> For information about system requirements for the software included in this bundle, see the <a href="vwp-release-notes.html">NetBeans Visual Web Pack 5.5 Release Notes</a>.</p>

<br>

<!-- IMPORTANT NOTES ----------------------------------------------------- -->
<h2><a name=impnotes></a>Important Notes</h2>

<blockquote><h3>Application Servers/Servlet Containers </h3>
<p>The Visual Web Pack works with all the application servers and servlet containers that the NetBeans IDE supports.</p>

  <h3>Java EE 5/JavaServer Faces 1.2 Constraints</h3>
<p>As of this date, only the Sun Java System Application Server 9 U1 (build 14) or higher supports Visual Web applications that use the Java EE 5 platform. If you use a different server, you must choose the J2EE 1.4 platform when you create your project.</p>

<h3>Bundled Travel Database</h3>
<p> Many of the tutorials and sample applications use a Travel database. If you make the Sun Java System Application Server available to the IDE before you install the Visual Web Pack,


 the Visual Web Pack installation adds a Travel database to the Java DB (Derby) server that is bundled with the Sun Java System Application Server.

If you make the the Sun Java System Application Server available to the IDE after you install the Visual Web Pack, you must restart the IDE to enable the Travel database. 
For instructions on installing the Travel database into your own installation of the Java DB or Apache Derby 
database server, see <a href="#samples">Visual Web Pack Sample Database</a> in the Configuration Information 
section.</p>
<h3>Technology Preview</h3>
<p>If you have installed the Technology Preview release of NetBeans Visual Web Pack 5.5, you must uninstall it, as described in <a href="#uninstallation" title="Uninstalling the Software">Uninstalling the Software</a>, prior to installing the production release of Visual Web Pack. </p>
<p>If you have installed the Blueprints Ajax components into the NetBeans Visual Web Pack 5.5 Technology Preview, you must uninstall these components manually prior to installing the production release of Visual Web Pack. 
To delete a component library from the IDE:
<ol>
  <li>Choose Tools > Component Library Manager.</li>
  <li>
    <p>In the Component Library Manager, select the library you want to delete and click the Remove button at the bottom of the window.</p> 
    You might see a message saying that you have projects open that use the library. If so, click OK in the message and close the Component Library Manager, and then close those projects. You can then reopen the Component Library Manager and start over.</li>
  <li>
    <p>Confirm that you want to delete the library.</p>
  The library is removed from your user directory. Any projects that use the library can continue to do so because they have their own copy of the library in the project directory.
  </li>
</ol></p>
</blockquote>
<p align=center><a href="#top">top</a></p>
<!-- PREREQUISITES ----------------------------------------------------- -->
<h2><a name=prerequisites></a>Prerequisites</h2>

<p>This topic specifies the prerequisites that must be met before you start to install <a href="../../../kb/55/vwp-index.html">NetBeans Visual Web Pack 5.5</a>. </p>
<p>Download NetBeans Visual Web Pack 5.5 from the <a href="http://services.netbeans.org/downloads/index.php?rs=11&p=9">netbeans.org Downloads Page</a>.</p>
<blockquote>
  <h3>Required Software</h3>
  <!--
  Release Notes does this better - refer to *an* app server and then *to best take advantage, use SJAS*
   -->

   <p>The following software must be installed before you install NetBeans Visual Web Pack 5.5:</p>

   <ul>
        <li><a href="http://services.netbeans.org/downloads/index.php">NetBeans IDE 5.5</a>.</li>
        <li><a href="http://java.sun.com/javase/downloads/index.jsp">Java SE Development Kit (JDK) 5.0 Update 6 (version 1.5.0_06)</a> or higher.<br>
            <br>
            If you do not have an installation of JDK 5.0 Update 6 or higher, you cannot proceed with the installation. You can download this JDK from the <a href="http://java.sun.com/javase/downloads/index.jsp">Java SE Downloads</a> page. <br>

            <br>
            Note that Mac OS X installations require   Java 2 Standard Edition (J2SE) 5.0  Release 4.
        You can download this JDK from the <a href="http://www.apple.com/support/downloads/" target="_blank">Apple Downloads page</a>. Search for &quot;J2SE&quot; to locate this release. </li>
        <li>One of the application servers or servlet containers that are supported by the Netbeans IDE.<br>
            <br>
        <b>Note:</b>To develop Visual Web applications using the Java EE 5
        platform, you must use the Sun Java System Application Server 9. 
        For more information, see the <a href="http://www.sun.com/software/products/appsrvr/index.xml">Java EE Downloads</a> web site. </li>

  </ul>
  <h3>Installation Order</h3>
    If you are installing the NetBeans Visual Web Pack with the NetBeans IDE and the separate installation of Sun Java System Application Server, it is best to <a href="#config_sjas">configure the application server</a> before installing the Visual Web Pack so that the bundled Travel database is immediately available. If you configure the application server after you install the Visual Web Pack, you must restart the IDE before the Travel database becomes available in the Runtime window.

  </p>
  <h3>Firewall Applications</h3>
  <p>Enabled firewall applications can prevent some components from being configured correctly during the installation process. Depending on your firewall, you might have to disable it prior to installation. Consult your firewall documentation. </p>

</blockquote>

<p align=center><a href="#top">top</a></p>
<!-- INSTALLATION ------------------------------------------------------ -->
<h2><a name=installation></a>Installing the Software</h2>
<p>This topic contains instructions for installing NetBeans Visual Web Pack 5.5 on all supported platforms:
<ul>
<li> <a href="#install_windows">Microsoft Windows</a> </li>
<li> <a href="#install_sollinux">Solaris OS and Linux</a> </li>
<li> <a href="#install_macos">Mac OS X</a> </li>
</ul>
</p> <p><b>Note: </b>If you have installed the Sun Java System Application Server, configure the application server on NetBeans IDE, as described in <a href="#config_sjas">Application Server Configuration</a> before installing Visual Web Pack so that the installer can install the sample Travel schema into the server's bundled Java DB database. Note that Visual Web Pack does not require an application server, but you deploy Visual Web Pack projects to an application server.</p>
<p><b>Important: </b>If you have installed the Technology Preview release of NetBeans Visual Web Pack 5.5, you must uninstall it, as described in <a href="#uninstallation" title="Uninstalling the Software">Uninstalling the Software</a>,  prior to installing the production release of Visual Web Pack. </p>
<blockquote>  <h3><a name=install_windows></a>Microsoft Windows</h3>

  <p>Following are instructions for installing NetBeans Visual Web Pack 5.5 on the Microsoft Windows platform.</p>
  <p><b>Before You Start</b></p>

  <p>The following restriction applies to the installation on the Microsoft Windows platform:</p>
  The installer first extracts the required files to the default temporary space directory defined by the <tt>TEMP</tt> environment variable. If the amount of disk space in the temporary directory is less than required, the installation might fail or proceed incorrectly. <br>
      <br>

      If you encounter this problem, you can increase the space allocated for the <tt>TEMP</tt> environment variable or specify a different temporary directory that has sufficient space. To specify a temporary directory for the installation, type the following commands: <br>

      <br>
    <blockquote><tt>&gt;&nbsp;cd&nbsp;<i>location-of-installer</i></tt> <br>
    <tt>&gt;&nbsp; <strong></strong>netbeans-visualweb-5_5-windows.exe&nbsp;-is:tempdir&nbsp;<i>temporary-directory</i></tt></blockquote>

     <p><b>To Install</b></p>
    <ol>
    <li> When you have downloaded the installer file <tt>netbeans-visualweb-5_5-windows.exe</tt>, double-click the installer's icon to launch the installer.
    </li>
    <li> At the Welcome page of the installation wizard, click Next.
    </li>
    <li> Accept the license agreement and click Next.    </li>

    <li> At the installation directory page of the installation wizard, specify the location of your NetBeans IDE 5.5 installation and click Next. </li>

    <li> The installation wizard searches for compatible JDK installations. If your JDK is not in the default location, you will need to specify the location of your Java JDK 1.5.0_06 or higher.
      You can also type the path to another installed JDK or use the Browse button to navigate to and select another installation.
    </li>
    <li>When installation is complete, click Finish to exit the wizard.</li>
  </ol>
    <p>The default projects directory is <tt>C:\Documents and Settings\<i>username</i></tt>. If you uninstall NetBeans Visual Web Pack, this directory is not deleted, and will be identified the next time you install Visual Web Pack.</p>

    <div class=greybox><b>Note: </b>If you encounter problems during software installation, see <a href="#troubleshoot">Troubleshooting</a> for full descriptions and suggested workarounds for unresolved issues that could affect the installation process. </div>
</blockquote>
 <p align=center><a href="#top">top</a></p>

<blockquote>
  <h3><a name=install_sollinux></a>Solaris OS and Linux</h3>
    <p>Following are instructions for installing NetBeans Visual Web Pack 5.5 on  Solaris and Linux platforms.</p>
    <p>In the instructions below, replace <tt><i>your_binary_executable</i></tt> with one of the following:</p>
    <ul>

    <li> <b>Solaris OS, SPARC</b>: <tt>netbeans-visualweb-5_5-solaris-sparc.bin</tt> </li>

      <li> <b>Solaris OS, x86/x64 Platform Edition</b>: <tt>netbeans-visualweb-5_5-solaris-x86.bin</tt> </li>
	  <li> <b>Linux</b>: <tt>netbeans-visualweb-5_5-linux.bin</tt> </li>
    </ul>

    <p><b>To Install</b>

    <ol>
      <li> When you have downloaded the installer file <tt><i>your_binary_executable</i></tt>, navigate to the directory that contains the file.
      </li>
      <li>
        <p>If necessary, change the permissions on the installer file to make the binary executable by typing the following command at a command prompt:</p>

        <tt>&#36;&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></tt>

      </li>
      <li> Launch the installer by typing the following command at a command prompt:<br>
        <br>
      <tt>&#36;&nbsp;./<i>your_binary_executable</i></tt>    </li>

      <li> At the Welcome page of the installation wizard, click Next.
      </li>

      <li> Accept the license agreement and click Next.
      </li>
      <li> At the installation directory page of the installation wizard, accept the NetBeans IDE directory found by the wizard or select a different IDE installation.
      </li>
      <li>
        <p> Verify that the installation location is correct and that you have adequate space on your system for the installation. To determine the amount of free disk space, execute the following command:
        </p>
        <tt>$ df -k</tt>
      </li>
      <li> Click Next to begin the installation.
      </li>
      <li> When the installation is complete, click Finish to exit the wizard. </li>
    </ol></p>
    <p>The default projects directory is <tt>&#36;HOME/</tt>. If you uninstall NetBeans Visual Web Pack, this directory is not deleted, and will be identified the next time you install Visual Web Pack.</p>
    <div class=greybox><b>Note: </b>If you encounter problems during software installation, see <a href="#troubleshoot">Troubleshooting</a> for full descriptions and suggested workarounds for unresolved issues that could affect the installation process. </div>
</blockquote>
<br>
  <p align=center><a href="#top">top</a></p>
  <!-- INSTALLATION: MAC OS ---------------------------------------------- -->
   <blockquote>  <h3><a name=install_macos></a>Mac OS X</h3>

    <p>Following are instructions for installing NetBeans Visual Web Pack 5.5 on the Macintosh OS X platform.</p>
    <p>Note that for the Macintosh OS, the required JDK
     is  Java 2 Standard Edition (J2SE) 5.0  Release 4.
    You can download this JDK from the <a href="http://www.apple.com/support/downloads/">Apple Downloads page</a>.
     Search for &quot;J2SE&quot; to locate the this release. </p>

    <p><b>Before You Start</b></p>
    <p>The following restrictions apply to the installation on the Mac OS X platform:</p>

    <ul>
      <li>
        <p>To ensure correct operation of the installer and uninstaller, you must configure Java to use JDK 5.0:</p>
        <ol type=a>
          <li> In the Finder window, go to Applications > Utilities > Java > J2SE5.0 and open the Java Preferences utility. </li>

          <li> In the Java Application Runtime Settings section, move J2SE5.0 to the top of the list.</li>

        </ol>
      </li>
      <li> To allow the operating system to correctly recognize the NetBeans 5.5 IDE bundle components, the installation directory must end with the string <tt>.app</tt>. </li>
    </ul>
    <p><b>To Install</b></p>
  <ol>
    <li>Double-click the installer's icon in the download window to launch the installer. </li>

      <li> At the Welcome page of the installation wizard, click Next.
      </li>
      <li>Accept the license agreement and click Next.
      </li>
      <li> At the installation directory page of the installation wizard, accept the NetBeans IDE directory found by the wizard or select a different IDE installation.
      </li>
      <li>
        <p> Verify that the installation location is correct and that you have adequate space on your system for the installation. To determine the amount of free disk space, execute the following command:
        </p>
        <tt>$ df -b</tt>

      </li>
      <li> Click Next to begin the installation.
      </li>
      <li> When the installation is complete, click Finish to exit the wizard. </li>
     </ol>
     <p>The default projects directory is <tt>&#36;<i>username</i>/</tt>. If you uninstall NetBeans Visual Web Pack, this directory is not deleted, and will be identified the next time you install Visual Web Pack.</p>

    <div class=greybox><b>Note: </b>If you encounter problems during software installation, see <a href="#troubleshoot">Troubleshooting</a> for full descriptions and suggested workarounds for unresolved issues that could affect the installation process.<br>
</div>
</blockquote>
  <p align=center><a href="#top">top</a></p>
<br>
<!--<h2><a name="upgrade"></a>Upgrading NetBeans Visual Web Pack  from Version 5.5 to 5.5.1.</h2>
 <p>To upgrade your Visual Web Pack installation, you must uninstall any BluePrints AJAX Components you have installed as well as the Visual Web Pack itself before installing the Production Release.</p>
<p>To uninstall BluePrints AJAX components:
<ol><li>From the Main menu, select Tools > Module Manager.</li>
  <li>In the Module Manager, expand the Visual Web module and select <tt>BluePrints AJAX Components Technology Preview v. 0.1.1</tt>. </li>
  <li>Click Uninstall, and then click Close.</li>
</ol>
</p> 
<p>NetBeans Visual Web Pack 5.5.1 only works with NetBeans IDE 5.5.1. To upgrade:<ol><li>Uninstall Visual Web Pack 5.5, following the instructions in <a href="#uninstallation">Uninstalling the Software</a> below.</li>
<li>Uninstall NetBeans IDE 5.5 and install NetBeans IDE 5.5.1 according to the instructions in the <a href="1/install.html">NetBeans 5.5 Installation Instructions</a>.</li>
<li>Install NetBeans Visual Web Pack 5.5.1 as described in <a href="#installation">Installing the Software</a> above. </li>
</ol>
</p> -->

<!-- CONFIG INFO ------------------------------------------------------- -->
<h2><a name=configinfo></a>Configuration Information</h2>

<p> This topic provides information on how to make the Sun Application Server 
available to the IDE, how to access the sample Travel database that is used 
by some sample applications and tutorials, and how to configure
a Visual Web project. </p>

<blockquote><ul>
  <li><a href="#config_sjas">Sun Java System Application Server Configuration </a></li>
  <!--  <li><a href="#dbaseconfig">Database Configuration</a></li> -->
    <li><a href="#samples"> Visual Web Pack Sample Database</a></li>
    <li><a href="#projconfig">Visual Web Project Configuration</a></li>

</ul>


<!-- Configuration: SJAS --------------------------------------------- -->

  <h3 style="color: rgb(14, 27, 85);"><a name=config_sjas></a>Sun Java System Application Server Configuration</h3>

  <p>If you have installed the NetBeans IDE that is bundled with the Sun Java System Application Server, 
  the application server is already registered with the IDE and you do not need to configure it. 
  If you downloaded and installed the Sun Java System Application Server
  separately, you must configure the IDE to make the server available to
  the IDE. It is best to configure the configure the server
  before installing the Visual Web Pack.</p>
  <p>To configure a separate installation of the server:</p>
  <ol>

    <li>After installing the NetBeans IDE and the Sun Java System Application Server, launch the  IDE.</li>
    <li>In the Runtime window, right-click the Servers node and choose Add Server
    from the pop-up menu.  </li>
    <li>In the Add Server Instance wizard, select Sun Java System Application Server from the Server
    drop-down list, and click Next.
  </li>
    <li>Enter the location of the application server installation and click Next. </li>
    <li><div>The default username and password values for the default Application Server domain, <tt>domain1</tt>, are:</div><ul>

      <li>username: <tt>admin</tt></li>

    <li>password: <tt>adminadmin</tt></li></ul>Note that if you specify a password here, it will be stored in your user directory, a possible security risk. If you do not specify the password here, you will be prompted for the values when needed.</li>
    <li>Click Finish.</li>

  </ol>
  <!-- <p>If you need to access the administration console for the Access Manager server, use the following values:
  <ul>
      <li>username: <tt>amadmin</tt></li>

  <li>password: <tt>admin123</tt> </li>   </ul>
  </p>-->

<!--
<h3><a name="dbaseconfig"></a>Database Configuration</h3>
<p>This section contains information for configuring Visual Web Pack for various database systems.</p>
<p>To create a new database connection: </p>
<ol><li>Launch the NetBeans IDE.
</li>
<li>In the Runtime window, right-click Databases and select New Connection.</li>
<li>
  <p>On the Basic setting tab of the New JDBC Driver dialog:
    </p>
  <ol type="a">
      <li>Select New Driver from the Name dropdown list. </li>
      <li>In the New JDBC Driver window, click Add and navigate to the location of your database's JDBC driver. The Driver Class and Name fields should populate automatically. Click OK. </li>
      <li>Modify the Database URL to reflect the host, port, and database you are using.
    </li>
      <li>Enter the User name and password of a user registered on the database. If you want to specify a database schema to use, do so on the Advanced tab.
    Otherwise click OK.</li>

  </ol>
</li>
</ol>
<p>To configure your database for NetBeans Visual Web Pack 5.5:</p>
<ol>
  <li>Launch the NetBeans IDE.
</li>
  <li>In the Runtime window, right-click Databases &gt; Drivers and select New Driver. </li>
  <li>In the New JDBC Driver window, click Add, navigate to the location of your database's JDBC driver, and select the driver. The Driver Class and Name fields should populate automatically. Click OK. </li>
</ol>
-->

<!-- Configuration: Java DB --------------------------------------------- -->

<h3><a name="samples"></a>Visual Web Pack Sample Database</h3>
<p>When you install the Visual Web Pack, the installation process
makes a sample Travel database available for the Java DB database
that is bundled with the Sun Java System Application Server, as
shown in the following table. Some
sample applications and tutorials require the Travel database.
If the IDE is configured to use the Sun Java System Application Server 
before the Visual Web Pack is installed, the Travel database
will be available from the Runtime window. If you make the
Sun Java System Application Server available to the IDE
after you install the Visual Web Pack, you must restart the IDE
before the Travel database appears in the Runtime window.
</p>
<table BORDER=1 CELLPADDING=4 CELLSPACING=3>
<col width="20*">
<col width="40*">
<col width="40*">
<tr valign="top"><th width="20%">Sample Database</th>
<th width="40%">Connection Details</th>

<th width="40%">Needed For</th></tr>
<tr width="20%"><td>Travel</td>
<td width="40%">DB URL: <tt>jdbc:derby://localhost:1527/travel</tt><br>
Driver: <tt>org.apache.derby.jdbc.ClientDriver</tt><br>
Username: travel<br>
Password: travel<br>
</td>
<td width="40%">Some tutorials and sample applications</td>
</tr>
</table>

<p><b>Note:</b> To use the Travel database with a server other than the Sun Java System
Application Server, you must make the <tt>derbyclient.jar</tt> available to the
server, as described in the following section.
</p>
<p>If you do not want to install the Sun Java System Application Server,
complete the following steps to make the Travel database available
to the IDE.</p>
<ol>
<li>Download and install either the <a href="http://developers.sun.com/prodtech/javadb/downloads/">Java DB</a> database or the <a href="http://db.apache.org/derby/derby_downloads.html">Apache
Derby</a> database.
</li>
<li>
  <p>Complete the following steps to make the database available
  to the IDE:</p>
<ol type="a">
<li>Choose Options from the Tools menu.</li>

<li>Clicked Advanced Options.</li>
<li>Expand Server and External Tool Settings, and select Java DB Database.</li>
<li>Set the <tt>Java DB Location</tt> to the folder into which you installed
the database server.</li>
<li>Set the <tt>Database Location</tt> to the folder in which you store
the databases.</li>
<li>Click Close.</li>
</ol>
</li>
<li>If you have not yet started the database server, choose Tools &gt;
Java DB Database &gt; Start Java DB Server.</li>
<li>In the Runtime window, right-click Databases and choose New Connection
from the pop-up menu to open the New Database Connection dialog box.</li>
<li>Choose Java DB (Network) from the drop-down list for Name.</li>
<li>In the textbox for Database URL, type <tt>jdbc:derby://localhost:1527/travel;create=true;</tt>.
<li>Set the Username to <tt>travel</tt>, set the Password to <tt>travel</tt>,
and click OK.</li>
<li>A new node for the connection appears. Right-click the node
and choose Disconnect from the pop-up menu.</li>
<li>You no longer need the connection to create the database. Right-click
the node and choose Delete from the pop-up menu.
</li>
<li>Right-click Databases and choose New Connection
from the pop-up menu to open the New Database Connection dialog box.</li>
<li>Choose Java DB (Network) from the drop-down list for Name.</li>
<li>In the textbox for Database URL, type <tt>jdbc:derby://localhost:1527/travel</tt>.
<li>Set both the User Name and the Password to <tt>travel</tt>
and click OK.</li>

<li><p>Once the connection has been established, click OK to close the dialog box.</p>
You will use this node from now on to connect to the Travel database.</li>
<li>Right-click the node for the connection and choose Execute Command to
open the SQL Command query editor.</li>
<li>In the main menu, choose File &gt; Open File.</li>
<li>Browse to and select <tt>$NetBeansInstallDir/rave2.0/startup/samples/create-Travel-derby.sql</tt>,
then click Open.</li>
<!-- <li>Copy the contents of the <tt>create-Travel-derby.sql</tt> file and
paste it into the SQL Command query editor.</li> -->

<li>Click Run SQL in the editing toolbar to create and populate the tables
in the Travel database.</li>
<li>Close the SQL Command query editor and the create-Travel-derby.sql.</li>
<li>Expand the node for the travel database connection to view the tables.</li>
</ol>
<p>For more information:</p>
<ul>

 <li> <a href="vwp-release-notes.html#configinfo">
  NetBeans Visual Web Pack 5.5 Configuration Information</a> has further instructions for configuring databases and application servers.</li>

<li>  <a href="http://developers.sun.com/prodtech/javadb/" target="_blank">
  Java DB At a Glance</a> gives a product overview to Java DB as well as a tour and documentation. <i>(External site opens in a new window.)</i> </li>
<li><a href="https://netbeans.org/kb/55/using-netbeans/dbconn.html#pgfId-1156774">Connecting To Databases</a> explains
how to connect the IDE to other database servers.</li>
</ul>

<h3><a name="projconfig"></a>Visual Web Project Configuration</h3>
<p>When you create a Visual Web project, the New Visual Web Application 
wizard allows you to set the server and Java EE version for that project, 
as shown in the following figure:</p>

  <!-- BEGIN FIGURE COMPONENT -->
<table border="0" cellpadding="2" cellspacing="0" width="668">
<tr>
<td align="center" class="grey3">

  <img src="../../../images_www/articles/newProject.png" width="658" height="436" border="0" alt="Figure 1: New Project Wizard">
  <div class="pad3"> <span class="dkcaption1"> <b>Figure 1</b>: New Project Wizard</span></div></td>
</tr>
</table>
<!-- END FIGURE COMPONENT --></p>

<p>If you want to use the JavaServer Faces 1.2 components, set the Java EE Version 
to Java EE 5. The Sun Java System Application Server 9 is currently the only 
tested server that supports Java EE 5 projects. The Visual Web Pack online 
help topic New Visual Web Application Wizard has detailed information 
about the settings you can use for creating a new project. </p>

<p>The following table is listed at the beginning of each Visual 
Web Pack tutorial and shows the resources that work with that tutorial:</p>

<table border="1" cellpadding="1">
  <tbody>
  <tr>
    <td valign="top">JavaServer Faces Components/<br>
      Java EE Platform</td>
    <td valign="top"><img src="../../../images_www/articles/check.png" alt="works with" height="15" hspace="3" width="14">1.2 with Java EE 5*<br>
      <img src="../../../images_www/articles/check.png" alt="works with" height="15" hspace="3" width="14">1.1 with J2EE 1.4 
  </td></tr>
  <tr>
    <td valign="top">Travel Database</td>
    <td colspan="4" valign="top"><img src="../../../images_www/articles/spacer.png" alt="not required" height="15" hspace="3" width="14">Not required</td>
  </tr>
  <tr>
    <td valign="top">BluePrints AJAX Component Library</td>
    <td colspan="4" valign="top"><img src="../../../images_www/articles/spacer.png" alt="not required" height="15" hspace="3" width="14">Not required</td>
  </tr>
</tbody></table><br>
<ul>
  
  <li><b>JavaServer Faces Components/Java EE Platform:


  </b>When you choose Java EE 5 for the platform, the Component Palette
  contains JavaServer Faces 1.2 components. When you choose 
  J2EE 1.4 for the platform, the Component Palette
  contains JavaServer Faces 1.1 components</li>

  <li><p><b>Travel Database: </b>If listed as <em>Required</em>, the 
  Travel database is required for completing the tutorial. 
  For more information about the Travel database, 
  see the previous section titled <a href="#samples">Visual Web Pack Sample</a>.</p>

To use the Travel database with a server other than the Sun Java System
Application Server, 
you must either add the <tt>derbyclient.jar</tt> to
your project or copy it into your server's library directory. 
For example, if you want to use the Travel database with Tomcat, 
copy the <tt>derbyclient.jar</tt> file into 
<tt>&#36;visualwebpack_install\enterprise3\apache-tomcat-5.5.17\common\lib.</tt>.
You can find a copy of the <tt>derbyclient.jar</tt> in 
<tt>&#36;glassfish_install\javadb\lib\derbyclient.jar</tt>.</li>
  <li><b>BluePrints AJAX Component Library: </b>If listed as <em>Required</em>, the tutorial demonstrates how to use components that are bundled with the BluePrints AJAX Component Library. See <a href="../../../kb/55/vwp-ajaximportcomponents.html">Downloading and Importing Ajax and Other Components</a> for details. </li>
</ul>


</blockquote>
<!--
<a href="http://db.apache.org/derby/quick_start.html">Apache Derby: Quick Start</a>--></p>

<p align=center><a href="#top">top</a></p>
<!-- UNINSTALLATION ------------------------------------------------------>
<h2><a name=uninstallation>Uninstalling the Software</a></h2>
<p>This section contains information for uninstalling NetBeans Visual Web Pack 5.5
  <!--, Sun Java System Application Server Platform Edition 9, Project Open ESB Starter Kit, and Sun Java System Access Manager-->
  from your system.
<ul>
<li><a href="#uninstall_windows">Microsoft Windows</a> </li>
<li> <a href="#uninstall_sollinux">Solaris OS and Linux</a> </li>
<li> <a href="#uninstall_macos">Mac OS X</a> </li>

</p>
<blockquote>
<!-- UNINSTALLATION: WINDOWS --------------------------------------------->
<h3><a name=uninstall_windows>Microsoft Windows</a></h3>
<p></p>
  <ol>
    <li> Shut down the IDE.
    </li>
    <li> From the Control Panel, start Add or Remove Programs, select NetBeans Visual Web Pack and click Change/Remove.
    </li>

    <li> Follow the instructions in the uninstaller. </li>

    <li>Remove the <tt>$&lt;NetBeans install directory&gt;\rave2.0</tt> directory manually if it still exists. </li>
  </ol>
  <!-- UNINSTALLATION: SOLARIS and LINUX ----------------------------------->
  <h3><a name=uninstall_sollinux>Solaris OS and Linux</a></h3>

  <ol>
    <li> Shut down the IDE.
    </li>

    <li> 
      <p>Navigate to the <tt>uninst</tt> subdirectory of your NetBeans Visual Web Pack 5.5 installation, </p>
    <tt>&#36;NetBeansInstallDir/rave2.0/uninst</tt></li>
    <li> Execute the <tt>uninstaller</tt> script. </li>
<li>Remove the <tt>$NetBeansInstallDir/rave2.0</tt> directory manually if it still exists. </li>
  </ol>

  
  <!-- UNINSTALLING MAC OS ------------------------------------------------- -->
<h3><a name=uninstall_macos>Mac OS X</a></h3>

  <ol>
    <li> Shut down the IDE.
    </li>

    <li> 
      <p>Navigate to the Visual Web Pack <tt>uninst</tt> subdirectory of your NetBeans Visual Web Pack 5.5 installation,</p>
      <tt>&#36;NetBeansInstallDir/NetBeans.app/Contents/Resources/NetBeans/rave2.0/uninst</tt></li>

    

    <li>
      <p>Execute the command:</p> 
    <tt>$ java -jar uninstall.jar</tt>.</li>
	<li>Remove the <tt>$NetBeansInstallDir/NetBeans.app/Contents/Resources/NetBeans/rave2.0</tt> directory manually if it still exists. </li>
  </ol>
</blockquote>

<br>
<p align=center><a href="#top">top</a></p>
<br>
<h2><a name=troubleshoot>Troubleshooting</a></h2>
<p>If you experience problems installing or running the software, see the list of issues below for workarounds. For a complete list of known issues, system requirements, and configuration information, see the <a href="vwp-release-notes.html">Release Notes</a>. </p>

<p> If you encounter a problem not listed in the release notes or wish to request an enhancement, file an issue in the NetBeans bug tracking system, IssueZilla, at <a href="https://netbeans.org/issues">https://netbeans.org/issues</a>.
For Visual Web Pack issues, select the "visualweb" component and then select an appropriate subcomponent. If you are not sure of the right subcomponent name, choose "other".</p>
<p>If you are already logged in to netbeans.org, you can go directly to the visualweb issue entry screen: <a href="https://netbeans.org/bugzilla/enter_bug.cgi?component=visualweb&version=5.5">https://netbeans.org/bugzilla/enter_bug.cgi?component=visualweb&version=5.5</a>.</p>

<p>Following are the unresolved issues for this release that could affect or disrupt the installation process: </p>
<ul>
  <!-- Bug Id: 6346340 http://bt2ws.central.sun.com/CrPrint?id=6346340 -->
  <li> <b><span style="color: rgb(4, 84, 145);">Solaris installation aborts with the error "JRE not found" even though JRE was installed and specified.</span></b>

    <blockquote>
      <p><strong><span class="titlectable style2"></span>Description: </strong> This application requires a Java Run Time Environment (JRE) implementation to run, but the installer is unable to find one on your computer. Use the command line switch <tt>-is:javahome</tt> to specify a valid JRE.  For more help, use the option <tt>-is:help</tt>.</p>
      <p><strong>Workaround: </strong> Start the installer with the <tt>-is:tempdir <i>custom-temp-dir</i></tt> command line parameter. Note that <tt><i>custom-temp-dir</i></tt> must be an absolute path, and should contain at least 1 GB of  disk space.</p>
    </blockquote>
  </li>
  <li><b><span style="color: rgb(4, 84, 145);">Installation of Sun Java System Application Server 9 fails due to conflict with port 4848</span></b></li>
  <blockquote>
  <p><strong><span class="titlectable style 2"></span>Description: </strong>By default, Sun Java System Application Server uses port 4848, a port which may be used by another application. You can modify the application server's <tt>setup.xml</tt> file to point to a different port. Note that this issue only affects standalone installations of Sun Java Application Server, not installations in which the application server is bundled with NetBeans IDE. </p>
  <p><strong>Workaround: </strong>To assign a different port number to Sun Java System Application Server:<ol>
  <li>Navigate to the directory containing the application servers's installer .JAR file. by.</li>
  <li><p>Extract the files in the installer by running the command: </p>
    <tt>java -Xmx256m -jar <i>filename.jar</i></tt></li>
   <li>Open <tt>setup.xml</tt> in a text editor.</li>
<li>Search for the string 4848 and change this number to that of an unused port. Save and close the file. </li>
<li>Continue with the <a href="http://glassfish.dev.java.net/public/downloadsindex.html#Instructions_to_unbundle_and_configure">application server's installation</a>.</li>
  </ol> </p>
  </blockquote>
</ul>

<p align=center><a href="#top">top</a>

<!-- End Content Area -->
</body>
</html>
