<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">

        <title>Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do NetBeans IDE 5.5.1</title>
        <meta name="description" content="Um guia para instalar o NetBeans IDE em v&aacute;rios sistemas operacionais">
        <link rel="stylesheet" type="text/css" href="../../../../netbeans.css">
    </head>
    <body>
        <a name="top"></a>
        <h1>Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do NetBeans IDE 5.5.1 </h1>

        <blockquote>
        <p>As instru&ccedil;&otilde;es abaixo referem-se &agrave; instala&ccedil;&atilde;o do NetBeans IDE 5.5.1. </p>

            <br>
            <div class="greybox">
                <p>Para obter informa&ccedil;&otilde;es sobre a instala&ccedil;&atilde;o de pacotes suplementares do NetBeans, consulte: </p>

                <ul>
                  <li><a href="mobility-install.html">Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do Mobility Pack</a></li>
                  <li><a href="mobilitycdc-install_pt_BR.html">Guia de instala&ccedil;&atilde;o do Mobility Pack para CDC</a></li>
                  <li><a href="vwp-install_pt_BR.html">Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do Visual Web Pack:</a></li>
                  <!--<li><a href="https://netbeans.org/community/releases/55/1/ep-install.html">Enterprise Pack Installation Instructions</a></li>-->
                  <li><a href="http://profiler.netbeans.org/download/index.html">Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do Profiler</a></li>
				  <li><a href="uml-download.html">Instru&ccedil;&otilde;es de instala&ccedil;&atilde;o do m&oacute;dulo de Modelagem UML</a></li>
                  <!--<li><a href="https://netbeans.org/community/releases/55/">C/C++ Pack Release Notes</a></li>-->
                </ul>
                <p><b>Observa&ccedil;&atilde;o: </b>Se quiser usar a funcionalidade SOA e BPEL no Enterprise Pack, utilize o NetBeans IDE 5.5 com o NetBeans Enterprise Pack 5.5. N&atilde;o temos previsto lan&ccedil;ar futuras atualiza&ccedil;&otilde;es do NetBeans Enterprise Pack 5.x. Todos os nossos esfor&ccedil;os est&atilde;o voltados para o desenvolvimento do NetBeans 6.0 com SOA. </p>

            </div>

        <br>
        <h2 style="color:#0E1B55">Conte&uacute;do</h2>
        <ul>
            <li><a href="#standalone">Instala&ccedil;&atilde;o do NetBeans IDE </a></li>
<!--            <li><a href="#bundle">NetBeans IDE and Sun Java System Application Server
            Bundle</a><a href="#bundle"> Installation</a></li>-->
            <li><a href="#launching">Abrindo o IDE</a></li>
<!--            <li><a href="#registerstart">Registering and Starting the Application Server</a></li>--> <!--            <li><a href="#other">Other Operating Systems </a></li>-->
            <li><a href="#archives">Distribui&ccedil;&atilde;o de arquivos </a></li>
            <li><a href="#uninstall">Desinstala&ccedil;&atilde;o</a></li>
            <li><a href="#troubleshooting">Solu&ccedil;&atilde;o de problemas</a></li>
        </ul>

        <p><b>Observa&ccedil;&atilde;o: </b>Para obter informa&ccedil;&otilde;es sobre requisitos de sistema, abertura do IDE com par&acirc;metros de inicializa&ccedil;&atilde;o diferentes, entre outras, consulte as <a href="relnotes_pt_BR.html">Notas da vers&atilde;o</a>.</p>
        </blockquote>
        <br>

        <a name="standalone"></a>
        <h2>Instala&ccedil;&atilde;o do NetBeans IDE </h2>
        <p>A seguir h&aacute; instru&ccedil;&otilde;es para a instala&ccedil;&atilde;o do NetBeans IDE 5.5.1 independente nas plataformas compat&iacute;veis. </p>
        <blockquote>
            <a name="windows_standalone"></a>
            <h2> style="color:#0E1B55">Windows</h2>
            <p>Em computadores com o Microsoft Windows, o uso do instalador compactado auto-extra&iacute;vel apresenta um m&eacute;todo preferencial de instalar o NetBeans IDE.</p>
            <blockquote>
                <p><b>Para instalar o NetBeans IDE:</b></p>
                <ol>
                    <li>Depois de fazer o download do arquivo instalador, clique duas vezes no &iacute;cone para abrir o instalador. </li>
                    <br>
                    <li>No assistente de instala&ccedil;&atilde;o, escolha uma resposta para o Contrato de licen&ccedil;a e clique em Pr&oacute;ximo.</li>
                    <br>
                    <li>Especifique um diret&oacute;rio vazio dentro do qual ser&aacute; instalado o NetBeans IDE.
                        <p><b>Observa&ccedil;&atilde;o:</b> Esta instala&ccedil;&atilde;o do NetBeans IDE n&atilde;o desorganizar&aacute; as configura&ccedil;&otilde;es de outras instala&ccedil;&otilde;es do NetBeans, porque o IDE cria automaticamente um novo diret&oacute;rio de usu&aacute;rio quando &eacute; aberto (<tt>${HOME}/.netbeans/5.5.1</tt>). </li>
                    <br>
                    <li>Escolha o JDK que o IDE usar&aacute; na lista de JDKs compat&iacute;veis e clique em Pr&oacute;ximo.</li>
                    <br>
                    <li>Verifique se o local de instala&ccedil;&atilde;o est&aacute; correto e se h&aacute; espa&ccedil;o dispon&iacute;vel no sistema para a instala&ccedil;&atilde;o.</li>
                    <br>
                    <li>Clique em Pr&oacute;ximo para iniciar a instala&ccedil;&atilde;o. </li>
                </ol>
                <div class="greybox">
                    <p><b>Observa&ccedil;&atilde;o: </b>Caso haja problemas durante a instala&ccedil;&atilde;o do software, consulte a se&ccedil;&atilde;o <a href="#troubleshooting">Solu&ccedil;&atilde;o de problemas</a> abaixo para obter as descri&ccedil;&otilde;es completas e as solu&ccedil;&otilde;es alternativas sugeridas para problemas n&atilde;o resolvidos que podem afetar o processo de instala&ccedil;&atilde;o.</p>
                </div>
            </blockquote>
            <br>

            <a name="solaris_standalone"></a>
            <h2 style="color:#0E1B55"> Sistema operacional Solaris (Solaris OS)</h2>
            <p>Em computadores com o sistema operacional Solaris, o m&eacute;todo preferencial para instalar o NetBeans IDE &eacute; usar o instalador bin&aacute;rio. </p>
            <blockquote>
                <p><b>Para instalar o NetBeans IDE:</b></p>
                <ol>
                    <li>V&aacute; at&eacute; o diret&oacute;rio que cont&eacute;m o instalador.</li><br>
                    <li>Se necess&aacute;rio, altere as permiss&otilde;es do arquivo instalador para tornar o bin&aacute;rio execut&aacute;vel. Para tanto, digite em um prompt de comando:
                        <blockquote> <code>$&nbsp;chmod&nbsp;+x&nbsp;<i>seu_execut&aacute;vel_bin&aacute;rio</i></code></blockquote>
                        <p><b>Observa&ccedil;&atilde;o:</b> Certifique-se de substituir <code><i>seu_bin&aacute;rio_execut&aacute;vel</i></code> pelo nome real do arquivo do bin&aacute;rio que foi baixado.</p></li>
                    <br>
                    <li>Abra o instalador executando em um prompt de comando:
                        <blockquote> <code>$&nbsp;./<i>seu_execut&aacute;vel_bin&aacute;rio</i></code>    </blockquote>
                        <p><b>Observa&ccedil;&atilde;o:</b> Verifique novamente se substituiu <code><i>seu_bin&aacute;rio_execut&aacute;vel</i></code> pelo nome real do arquivo do bin&aacute;rio que foi baixado.</p></li>
                    <br>
                    <li>No assistente de instala&ccedil;&atilde;o, escolha uma resposta para o Contrato de licen&ccedil;a e clique em Pr&oacute;ximo. </li>
                    <br>
                    <li>Especifique um diret&oacute;rio vazio dentro do qual ser&aacute; instalado o NetBeans IDE e clique em Pr&oacute;ximo.</li>
                    <br>
                    <li>Escolha o JDK que o IDE usar&aacute; na lista de JDKs compat&iacute;veis e clique em Pr&oacute;ximo.<br>
                    <p>O instalador procura os JDKs instalados no sistema e pergunta se deseja especificar qual ser&aacute; utilizado. &Eacute; poss&iacute;vel fazer isso na linha de comando. Por exemplo:
                    <blockquote><code> $&nbsp;./<i>seu_bin&aacute;rio_execut&aacute;vel</i>&nbsp;-is:javahome&nbsp;<i>caminho_para_seu_jdk</i></code> </blockquote></li>
                    <br>
                    <li>Verifique se o local de instala&ccedil;&atilde;o est&aacute; correto e se h&aacute; espa&ccedil;o dispon&iacute;vel no sistema para a instala&ccedil;&atilde;o.</li>
                    <br>
                    <li>Clique em Pr&oacute;ximo para iniciar a instala&ccedil;&atilde;o. </li>
                </ol>
                <div class="greybox">
                    <p><b>Observa&ccedil;&atilde;o: </b>Caso haja problemas durante a instala&ccedil;&atilde;o do software, consulte a se&ccedil;&atilde;o <a href="#troubleshooting">Solu&ccedil;&atilde;o de problemas</a> abaixo para obter as descri&ccedil;&otilde;es completas e as solu&ccedil;&otilde;es alternativas sugeridas para problemas n&atilde;o resolvidos que podem afetar o processo de instala&ccedil;&atilde;o.</p>
                </div>
            </blockquote>
            <br>

            <a name="linux_standalone"></a>
            <h2 style="color:#0E1B55">Linux</a></h2>
            <p>Em computadores com Linux, o m&eacute;todo de prefer&ecirc;ncia para instalar o NetBeans IDE &eacute; usar o instalador bin&aacute;rio.</p>
            <blockquote>
                <p><b>Para instalar o NetBeans IDE:</b></p>
                <ol>
                    <li>V&aacute; at&eacute; o diret&oacute;rio que cont&eacute;m o instalador.</li>
                    <br>
                    <li>Se necess&aacute;rio, altere as permiss&otilde;es do arquivo instalador para tornar o bin&aacute;rio execut&aacute;vel. Para tanto, digite em um prompt de comando:
                        <blockquote> <code>$&nbsp;chmod&nbsp;+x&nbsp;<i>seu_execut&aacute;vel_bin&aacute;rio</i></code></blockquote>
                        <p><b>Observa&ccedil;&atilde;o:</b> Certifique-se de substituir <code><i>seu_bin&aacute;rio_execut&aacute;vel</i></code> pelo nome real do arquivo do bin&aacute;rio que foi baixado.</p></li>
                    <br>
                    <li>Abra o instalador executando em um prompt de comando:
                        <blockquote> <code>$&nbsp;./<i>seu_execut&aacute;vel_bin&aacute;rio</i></code>    </blockquote>
                        <p><b>Observa&ccedil;&atilde;o:</b> Verifique novamente se substituiu <code><i>seu_bin&aacute;rio_execut&aacute;vel</i></code> <br> pelo nome real do arquivo do bin&aacute;rio que foi baixado.</p></li>
                    <br>
                    <li>No assistente de instala&ccedil;&atilde;o, escolha uma resposta para o Contrato de licen&ccedil;a e clique em Pr&oacute;ximo. </li>
                    <br>
                    <li>Especifique um diret&oacute;rio vazio dentro do qual ser&aacute; instalado o NetBeans IDE e clique em Pr&oacute;ximo.</li>
                    <br>
                    <li>Escolha o JDK que o IDE usar&aacute; na lista de JDKs compat&iacute;veis e clique em Pr&oacute;ximo.<br>
                        <p>O instalador procura os JDKs instalados no sistema e pergunta se deseja especificar qual ser&aacute; utilizado. &Eacute; poss&iacute;vel fazer isso na linha de comando. Por exemplo:
                    <blockquote><code> $&nbsp;./<i>seu_bin&aacute;rio_execut&aacute;vel</i>&nbsp;-is:javahome&nbsp;<i>caminho_para_seu_jdk</i></code></blockquote></li>
                    <br>
                    <li>Verifique se o local de instala&ccedil;&atilde;o est&aacute; correto e se h&aacute; espa&ccedil;o dispon&iacute;vel no sistema para a instala&ccedil;&atilde;o.</li>
                    <br>
                    <li>Clique em Pr&oacute;ximo para iniciar a instala&ccedil;&atilde;o. </li>
                </ol>
                <div class="greybox">
                    <p><b>Observa&ccedil;&atilde;o: </b>Caso haja problemas durante a instala&ccedil;&atilde;o do software, consulte a se&ccedil;&atilde;o <a href="#troubleshooting">Solu&ccedil;&atilde;o de problemas</a> abaixo para obter as descri&ccedil;&otilde;es completas e as solu&ccedil;&otilde;es alternativas sugeridas para problemas n&atilde;o resolvidos que podem afetar o processo de instala&ccedil;&atilde;o.</p>
                </div>
            </blockquote>
            <br>

            <a name="macintosh_standalone"></a>
            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p>No Macintosh OS X, o NetBeans est&aacute; compactado como um pacote de aplicativo nativo. O m&eacute;todo de prefer&ecirc;ncia para instalar o NetBeans IDE &eacute; usar o arquivo tarball (<tt>.tar.gz</tt>).</p>
            <blockquote>
                <p><b>Para instalar o NetBeans IDE:</b></p>
                <ol>
                    <li>Fa&ccedil;a o download do arquivo tarball para o local desejado no sistema. </li>
                    <br>
                    <li>Clique duas vezes no arquivo para descompactar o conte&uacute;do para o sistema. </li>
                </ol>
                <div class="greybox">
                    <p><b>Observa&ccedil;&atilde;o: </b>Caso haja problemas durante a instala&ccedil;&atilde;o do software, consulte a se&ccedil;&atilde;o <a href="#troubleshooting">Solu&ccedil;&atilde;o de problemas</a> abaixo para obter as descri&ccedil;&otilde;es completas e as solu&ccedil;&otilde;es alternativas sugeridas para problemas n&atilde;o resolvidos que podem afetar o processo de instala&ccedil;&atilde;o.</p>
                </div>
            </blockquote>
        </blockquote>
        <br>

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

<!--
        <a name="bundle"></a>
        <h2>NetBeans IDE and Sun Java System Application Server Bundle Installation</h2>
        <p>Following are instructions for installing the NetBeans IDE 5.5.1  and
        Sun Java System Application Server Platform Edition 9.1 bundle on all supported platforms.</p>
        <blockquote>
            <a name="windows_bundle"></a>
            <h2 style="color:#0E1B55"> Windows</h2>
            <p>On Microsoft Windows machines, the preferred method of installing
            NetBeans IDE and Sun Java System Application Server bundle is using
            the self-extracting installer.</p>
            <blockquote>
                <p><b>To install the NetBeans IDE 5.5.1 and Sun Java System Application Server
                Platform Edition 9 bundle: </b></p>
                <ol>
                    <li>Once you have downloaded the installer file, double-click the installer's
                    icon to launch the installer. </li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next.</li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.<br>
                        <p><b>Note:</b> This NetBeans IDE will not disrupt the settings of
                        your other NetBeans installations because the IDE automatically creates
                        a new user directory when launched (<tt>${HOME}/.netbeans/5.5.1</tt>).</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list of suitable
                    choices in the list, then click Next.</li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="solaris_bundle"></a>
            <h2 style="color:#0E1B55">Solaris Operating System (Solaris OS)</h2>
            <p>On machines running Solaris operating system, the binary installer is the preferred method for
            installing NetBeans IDE and Sun Java System Application Server bundle. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE 5.5.1 and Sun Java System
                Application Server Platform Edition 9 bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer. </li>
                    <br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in its
                    name.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li> Choose the JDK you want the IDE to use from the
                    list of suitable choices in the list, then click Next.
					<p>The installer searches for JDKs installed on your system
                    	and prompts you  to specify which one it should use. You
                    	can also specify which  JDK the IDE should use from
                    	the command line. For example:
                    <blockquote><code> $&nbsp;./<i>your_binary_executable</i>&nbsp;-is:javahome&nbsp;<i>path_to_your_jdk</i></code> </blockquote></li>
                    <br>

                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="linux_bundle"></a>
            <h2 style="color:#0E1B55">Linux</h2>
            <p>On Linux machines, the binary installer is the preferred method
            for installing  NetBeans IDE and Sun Java System Application Server
            bundle. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE and Sun Java System Application Server
                bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer. </li>
                    <br>
                    <li>If necessary, change the installer file's permissions to make the binary
                        executable by typing from a command prompt:
                        <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p> </li>
                    <br>
                    <li>Launch the installer by typing from a command prompt:
                        <blockquote> <code>$&nbsp;./<i>your_binary_executable</i></code></blockquote>
                        <p><b>Note:</b> Again, be sure to replace <code><i>your_binary_executable</i></code>
                        with the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next. </li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in its
                    name.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory within which to install the Application
                    Server and click Next.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list
                    of suitable choices in the list, then click Next.
                    <p>The installer searches for JDKs installed on your system
                    	and prompts you  to specify which one it should use. You
                    	can also specify which  JDK the IDE should use from
                    	the command line. For example:
                    <blockquote><code> $&nbsp;./<i>your_binary_executable</i>&nbsp;-is:javahome&nbsp;<i>path_to_your_jdk</i></code> </blockquote></li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect  the installation process.</p>
                </div>
            </blockquote>
            <br>

            <a name="macintosh_bundle"></a>
            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p>On Mac OS X, the NetBeans and Sun Java System Application Server
            bundle is packaged as a jar file. </p>
            <blockquote>
                <p><b>To install the NetBeans IDE and Sun Java System Application Server
                bundle: </b></p>
                <ol>
                    <li>Navigate to the directory that contains the installer.
                    <li>If necessary, change the installer file's permissions to make the binary
                    executable by typing from a command prompt:
                    <blockquote> <code> $&nbsp;chmod&nbsp;+x&nbsp;<i>your_binary_executable</i></code></blockquote>
                    <p><b>Note:</b> be sure to replace <code><i>your_binary_executable</i></code> with
                    the actual filename of the binary that you downloaded.</p></li>
                    <br>
                    <li>Launch the installer by double-clicking the bundle installer jar file.</li>
                    <br>
                    <li>On the install wizard's initial panel, click Next to continue.</li>
                    <br>
                    <li>In the install wizard, respond to the License Agreement, then click Next.</li>
                    <br>
                    <li>Specify an empty directory within which to install the IDE.
                    The installation directory must not contain spaces in its
                    name. By default, NetBeans is installed in the Applications directory.</li>
                    <br>
                    <li>On the same page of the wizard, specify an empty directory
                    within which to install the Application Server and click Next.
                    By default, the Application server is installed in the
                    <tt>SUNWappserver</tt> subdirectory of your home directory.</li>
                    <br>
                    <li>Choose the JDK you want the IDE to use from the list
                    of suitable choices in the list, then click Next.
                    <p>The installer searches for JDKs installed on your system
                    	and prompts you  to specify which one it should use. You
                    	can also specify which  JDK the IDE should use from
                    	the command line. For example:
                    <blockquote><code> $&nbsp;./<i>your_binary_executable</i>&nbsp;-is:javahome&nbsp;<i>path_to_your_jdk</i></code> </blockquote></li>
                    <br>
                    <li>Verify that the installation location is correct and that you have adequate
                    space on your system for the installation.</li>
                    <br>
                    <li>Click Next to begin the installation. </li>
                </ol>
                <div class="greybox">
                    <p><b>Note: </b>If you encounter problems successfully completing the software
                    installation, see the <a href="#troubleshooting">Troubleshooting</a> section
                    below for full descriptions and suggested workarounds for unresolved
                    issues that could affect the installation process.</p>
                </div>
            </blockquote>
        </blockquote>
        <br>

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

<!--
        <a name="other"> <h2>Other Operating Systems</h2></a>
        <p>If you are using an operating system for which there is no installer you can
        still use NetBeans IDE by downloading and installing archive distributions.
        For more information, see the <a href="#archives">Archive Distributions</a>
        section below. </p>
        <br>

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

        <a name="launching"></a>
        <h2>Abrindo o IDE</h2>
        <p>Seguem instru&ccedil;&otilde;es para iniciar o NetBeans IDE. Caso esteja usando um sistema operacional para o qual n&atilde;o h&aacute; instalador, &eacute; poss&iacute;vel usar o NetBeans IDE fazendo o download e instalando distribui&ccedil;&otilde;es de arquivo. Para obter mais informa&ccedil;&otilde;es, consulte a se&ccedil;&atilde;o <a href="#archives">Distribui&ccedil;&otilde;es de arquivo</a> abaixo. </p>

        <blockquote>
            <h2 style="color:#0E1B55">Windows</h2>
            <p><b>Para iniciar o IDE em computadores com o Microsoft Windows, escolha uma das seguintes op&ccedil;&otilde;es:</b></p>
            <ul>
                <li>Clique duas vezes no &iacute;cone do NetBeans IDE na &aacute;rea de trabalho.</li>
                <br>
                <li>No menu Iniciar, selecione NetBeans IDE 5.5.1 &nbsp;&gt;&nbsp;NetBeans IDE.</li>
            </ul>
            <br>

            <h2 style="color:#0E1B55">Sistema operacional Solaris (Solaris OS)</h2>
            <p><b>Para iniciar o NetBeans IDE em sistemas Solaris:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o subdiret&oacute;rio <tt>bin</tt> da instala&ccedil;&atilde;o. </li>
                <br>
                <li>Execute o script do iniciador digitando <tt>./netbeans</tt>.
            </ol>
            <br>

            <h2 style="color:#0E1B55">Linux</h2>
            <p><b>Para iniciar o NetBeans IDE em sistemas Linux:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o subdiret&oacute;rio <tt>bin</tt> da instala&ccedil;&atilde;o. </li>
                <br>
                <li>Execute o script do iniciador digitando <tt>./netbeans</tt>.
            </ol>
            <br>

            <h2 style="color:#0E1B55">Macintosh OS X</h2>
            <p><b>Para iniciar o NetBeans IDE em sistemas Mac OS X:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o diret&oacute;rio de instala&ccedil;&atilde;o. </li>
                <br>
                <li>Clique duas vezes no &iacute;cone do aplicativo NetBeans IDE. </li>
            </ol>
        </blockquote>
        <br>

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

<!--
        <a name="registerstart"> <h2>Registering and Starting the Application Server </h2></a>
        <p>If you used the standalone NetBeans IDE installer, you need to register
        the Application Server before you can use it.
        <blockquote>
            <p><b>Registering the Sun Java System Application Server</b></p>
            <p>To register the Sun Java System Application Server:
            <ol>
                <li>Go to Tools &gt;&nbsp;Server Manager.</li>
                <br>
                <li>In the Server Manager, click Add Server. </li>
                <br>
                <li>In the dialog box, select Sun Java System Application Server 9 and click
                Next.</li>
                <br>
                <li>Enter a name for the server instance. This name is used to identify the
                server in the IDE.</li>
                <br>
                <li>Enter the location, user name, and password. You do not need to enter
                the installation location and domain if you are registering a remote
                instance of the server. You must register a local installation of the
                application server before you can register remote instances.</li>
                <br>
                <li>Click Finish. </li>
            </ol>
            <p><b>Note:</b> If you used the bundle installer, the Sun Java System Application
            Server was installed and configured automatically so it is not necessary to
            carry out the registration procedure outlined above. </p>
            <br>
            <p><b>Starting the Sun Java System Application Server</b></p>
            <p>To start the Application Server:
            <ol>
                <li>In the Runtime window, right-click the newly-created localhost node and
                choose Start/Stop Server from the contextual menu. </li>
                <br>
                <li>In the Server Status dialog, click Start Server.</li>
                <br>
                <li> Click Close to close the dialog box.</li>
            </ol>
            <div class="greybox">
                <p><b>Note: </b>The NetBeans IDE and Sun Java System Application Server bundle
                creates the <tt>admin</tt> user with password <tt>adminadmin</tt> by default.
                Users should use these settings to log in via the web console. </p>
            </div>
        </blockquote>
        <br>

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

        <a name="archives"> <h2>Distribui&ccedil;&atilde;o de arquivos</h2></a>
        <p>Caso esteja usando um sistema operacional para o qual n&atilde;o h&aacute; instalador, &eacute; poss&iacute;vel usar o NetBeans IDE fazendo o download e instalando distribui&ccedil;&otilde;es de arquivo. Tamb&eacute;m &eacute; poss&iacute;vel instalar distribui&ccedil;&otilde;es de arquivo do IDE caso pretenda testar constru&ccedil;&otilde;es de desenvolvimento.</p>
        <blockquote>
            <p><b>Para instalar distribui&ccedil;&otilde;es de arquivo do NetBeans IDE: </b></p>
            <ol>
                <li>V&aacute; at&eacute; o diret&oacute;rio que cont&eacute;m o arquivo. </li>
                <br>
                <li>Descompacte o arquivo utilizando os utilit&aacute;rios apropriados para o sistema.
            </ol>
            <p><b>Para abrir distribui&ccedil;&otilde;es de arquivo do NetBeans IDE:</b> </p>
            <ol>
                <li>V&aacute; at&eacute; o subdiret&oacute;rio <tt>bin</tt> da instala&ccedil;&atilde;o do NetBeans IDE.</li>
                <br>
                <li>Execute o iniciador apropriado para o sistema. </li>
            </ol>
            <p>Os seguintes iniciadores est&atilde;o inclu&iacute;dos nas distribui&ccedil;&otilde;es de arquivo: </p>
            <ul>
                <li><tt>netbeans.exe</tt> - Windows</li>
                <li><tt>nb.exe</tt> - Windows (dentro de uma janela de console)</li>
                <li><tt>netbeans</tt> - UNIX, Linux </li>
                <li><tt>NetBeans </tt> - Mac OS X </li>
                <li><tt>netbeans.cmd</tt> - OS/2 </li>
                <!--<li><tt>netbeansopenvms.com</tt> - OpenVMS -->
            </ul>
            <p>Caso n&atilde;o haja um iniciador espec&iacute;fico para seu sistema, &eacute; poss&iacute;vel criar um modificando o script adequado. No entanto, se o equipamento for compat&iacute;vel com JDK 1.5.0 ou superior, &eacute; prov&aacute;vel que consiga executar o IDE.
            <p><b>Observa&ccedil;&atilde;o</b>: Voc&ecirc; pode contribuir para o projeto NetBeans caso crie um iniciador. Para obter mais informa&ccedil;&otilde;es, consulte <a href="https://netbeans.org/community/contribute/index_pt_BR.html">Contribuindo para o netbeans.org</a>. </p>
        </blockquote>
        <br>

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

    <a name="uninstall"> <h2>Desinstalando o NetBeans IDE </h2></a>
    <p>Se necess&aacute;rio, &eacute; poss&iacute;vel desinstalar o NetBeans IDE por meio dos procedimentos a seguir.</p>
    <blockquote>
        <h3 style="color:#0E1B55">Desinstalando o NetBeans IDE 5.5.1 do Windows</h3>
        <blockquote>
            <p><b>Para desinstalar o NetBeans IDE:</b></p>
            <ol>
                <li>No menu Iniciar do sistema, escolha Painel de controle.</li>
                <br>
                <li>Clique duas vezes no &iacute;cone Adicionar ou remover programas.</li>
                <br>
                <li>Selecione o NetBeans IDE 5.5.1 na lista e clique em Remover.</li>
            </ol>

<!--            <p><b>To uninstall the Sun Java System Application Server
            Platform Edition 9:</b></p>
            <ol>
                <li>From your system's Start menu, open the Control Panel.</li>
                <br>
                <li>Double-click the Add or Remove Programs icon.</li>
                <br>
                <li>Select the Sun Java System Application Server Platform
                Edition 9 from the list and click Remove.</li>
            </ol>
-->

<!--        <p><b>Note:</b> If you uninstall the J2SE JDK software, but
            wish to continue using NetBeans IDE, you must set the IDE's
            <tt>-jdkhome</tt> parameter to point to an alternate installation of the J2SE
            JDK as outlined below.</p>
-->
        </blockquote>

        <h3 style="color:#0E1B55">Desinstalando o NetBeans IDE 5.5.1 do Solaris (Edi&ccedil;&otilde;es das plataformas SPARC e x86) </h3>
        <blockquote>
            <p><b>Para desinstalar o NetBeans IDE:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o subdiret&oacute;rio <tt>_uninst</tt> da pasta de instala&ccedil;&atilde;o do NetBeans IDE.</li>
                <br>
                <li>Digite <tt>./uninstaller</tt> para executar o desinstalador InstallShield.</li>
            </ol>

<!--
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun
                Java System Application Server Platform Edition 9.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
-->
        </blockquote>

        <h3 style="color:#0E1B55">Desinstalando o NetBeans IDE 5.5.1 do Linux </h3>
        <blockquote>
            <p><b>Para desinstalar o NetBeans IDE:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o subdiret&oacute;rio <tt>_uninst</tt> da pasta de instala&ccedil;&atilde;o do NetBeans IDE.</li>
                <br>
                <li>Em uma janela de terminal, digite<tt>./uninstall</tt> para executar o desinstalador InstallShield.</li>
            </ol>

<!--
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun
                Java System Application Server Platform Edition 9.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
-->
            </blockquote>

        <h3 style="color:#0E1B55">Desinstalando o NetBeans IDE 5.5.1 do Macintosh OS X </h3>
        <blockquote>
            <p><b>Para desinstalar o NetBeans IDE:</b></p>
            <ol>
                <li>V&aacute; at&eacute; o local de instala&ccedil;&atilde;o do NetBeans IDE. Por padr&atilde;o, o NetBeans &eacute; instalado no diret&oacute;rio Aplicativos.</li>
                <br>
                <li>Clique com o bot&atilde;o direito do mouse no &iacute;cone do NetBeans e escolha no menu pop-up Mover para a lixeira.</li>
                <!--
                <br>
                <li>In the window that appears, navigate to the <tt>_uninst</tt>
                subdirectory. </li>
                <br>
                <li>In a terminal window, type <tt>./uninstaller</tt> to run the InstallShield uninstaller.</li>
                -->
            </ol>

<!--
            <p><b>To uninstall the Sun Java System Application Server:</b></p>
            <ol>
                <li>Navigate to the installation directory of the Sun Java System
                Application Server Platform Edition 9. By default, the Application
                server is installed in the <tt>SUNWappserver</tt> subdirectory of your
                home directory.</li>
                <br>
                <li>In a terminal window, type <tt>./uninstall</tt> to run the uninstaller.</li>
            </ol>
-->
            </blockquote>
    </blockquote>

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

        <a name="troubleshooting"><h2>Solu&ccedil;&atilde;o de problemas</h2></a>
        <p>Se tiver problemas ao instalar ou executar o software, consulte a lista de problemas abaixo para ver as solu&ccedil;&otilde;es. Para obter uma lista completa dos problemas conhecidos, dos requisitos do sistema e outras informa&ccedil;&otilde;es &uacute;teis, consulte <a href="relnotes_pt_BR.html">Notas&nbsp;da&nbsp;vers&atilde;o</a>. </p>
        <p> Encontram-se abaixo os problemas n&atilde;o solucionados desta vers&atilde;o que podem afetar ou interromper o processo de instala&ccedil;&atilde;o: </p>
        <ul>
            <!--<li><h3>General Issues</h3>
            <blockquote>
                <p><b>Description:</b></p>
                <p>The installer for the NetBeans IDE and Sun Java System Application
                Server bundle does not let you install on JDK 6.0, because Sun Java
                System Application Server Platform Edition 8.2 has several serious
                issues on pre-release versions of JDK 6.0. However, you can install
                the NetBeans IDE standalone installer on JDK 6.0.
            </blockquote>
            <br>--> <!--
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=72601">Issue #72601</a>
            <blockquote>
                <p><b>Description:</b></p>
                <p>After specifying the location of the Sun Java System Application
                Server and clicking Next, the wizard page becomes blank, and it is impossible to
                continue the installation.
                <p><b>Workaround:</b></p>
                <p>In the wizard, press Cancel. On your system, navigate to
                the NetBeans IDE installation directory that installer has just created and
                delete that directory. Then run the installer again and specify a location for the
                application server installation directory that is not inside of the NetBeans IDE
                installation directory.</p>
            </blockquote>
            <br>-->

            <li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26965">Erro #26965</a>
            <blockquote>
                <p><b>Descri&ccedil;&atilde;o:</b></p>
                <p>Ao usar as instala&ccedil;&otilde;es do JDK que incluem uma vers&atilde;o incompat&iacute;vel do  <tt>sax.jar</tt>, o instalador do IDE trava e aparece a seguinte mensagem: &quot;O assistente n&atilde;o pode prosseguir por causa do seguinte erro: n&atilde;o &eacute; poss&iacute;vel carregar o assistente especificado em /wizard.inf (104)&quot;
                <p><b>Solu&ccedil;&atilde;o:</b></p>
                <p>Remover temporariamente <tt>jre/lib/endorsed/sax.jar</tt> do diret&oacute;rio do JDK durante a instala&ccedil;&atilde;o do IDE.
                </blockquote><br>

            <!--
            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52856">Issue #52856 (Windows XP only) </a>
            <blockquote>
            <p><b>Description:</b></p>
                <p>Sun Java System Application Server  installation fails. Note that
                this problem has been known to occur both when using the NetBeans IDE 5.5
                and Sun Java System Application Server Platform Edition 8.2 Bundle
                installer as well as the stand-alone Application Server installer.
                This happens when a previous installation of the Application Server has failed and
                subsequent attempts at  uninstallation were also unsuccessful (i.e. some
                registry entries or configuration files weren't deleted).
                <p><b>Workaround:</b></p>
                <p>If this happens, remove all previous installations of the Sun Java
                System Application Server. Then delete the installer's <code>&lt;USERHOME&gt;\Local
                Settings\temp\</code> directory and the Application Server's <code><userhome>\Application
                Data\Sun\tmp\</code> directory (note that files may also be located in <code>&lt;WINDIR&gt;\Sun\</code>).
                If a previous uninstallation attempt of the Application Server was
                unsuccessful, also delete the <code>&lt;SYSTEMDIR&gt;/productregistry</code> file.
                Next, create a new directory within which to install the software
                and ensure that the directory is empty and writable. Finally, reinstall
                the Application Server in the new location on your system. <!--<b>Note: </b>in
                general, it is recommended that users use the provided uninstaller
                to remove Application Server installations.
            </blockquote><br>
            -->

            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=65482">Erro #65482 (apenas no Linux) </a>
            <blockquote>
                <p><b>Descri&ccedil;&atilde;o:</b></p>
                <p>N&atilde;o &eacute; poss&iacute;vel instalar o NetBeans em algumas distribui&ccedil;&otilde;es do Mandrake/Mandriva Linux. Durante a instala&ccedil;&atilde;o, o instalador exibe a seguinte mensagem:
                    <blockquote>
                        <pre>Initializing InstallShield Wizard........<br>./netbeans-5_0-bin-linux.bin: line 189: bc: command not found<br>./netbeans-5_0-bin-linux.bin: line 404: [: : integer expression expected </pre>
                    </blockquote>
                <p><b>Solu&ccedil;&atilde;o:</b></p>
                <p>O instalador do NetBeans utiliza o utilit&aacute;rio bc do GNU, que pode n&atilde;o ser instalado por padr&atilde;o no Mandriva. Caso tenha esse problema, instale o utilit&aacute;rio bc do GNU manualmente antes de instalar o NetBeans. Se tiver conex&atilde;o ativa &agrave; Internet, &eacute; poss&iacute;vel executar <tt>urpmi bc</tt> na linha de comando para fazer a instala&ccedil;&atilde;o. Tamb&eacute;m &eacute; poss&iacute;vel fazer o download do RPM adequado e instal&aacute;-lo por meio do comando <tt>rpm -i &lt;bc_package&gt;.rpm</tt>.</p>
            </blockquote>
            <br>

            <li><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=67530">Erro #67530 </a>
            <blockquote>
                <p><b>Descri&ccedil;&atilde;o:</b></p>
                <p>Depois de iniciar o instalador, aparece a mensagem &quot;Bem-vindo ao assistente de instala&ccedil;&atilde;o para ERRO: nulo&quot;. Esse problema pode ser causado pela execu&ccedil;&atilde;o simult&acirc;nea de v&aacute;rios instaladores ou pela execu&ccedil;&atilde;o do instalador depois que outro n&atilde;o foi fechado de forma correta.</p>
                <p><b>Solu&ccedil;&atilde;o:</b></p>
                <p>Exclua os conte&uacute;dos do diret&oacute;rio <tt>\InstallShield\Universal\Common</tt> e reinicie o computador.</p>
                <p>Em sistemas Windows, esse diret&oacute;rio est&aacute; localizado em <tt>C:\Arquivos de programas\Arquivos comuns\InstallShield\Universal\Common</tt>.</p>
                <p>Em sistemas Solaris e Linux, esse diret&oacute;rio est&aacute; localizado em <tt><i>/$HOME</i>/InstallShield/Universal/Common</tt>.</p>
            </blockquote>

            <li> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=52012">Erro #52012 (somente em sistemas Windows XP em turco)</a>
            <blockquote>
                <p><b>Descri&ccedil;&atilde;o:</b></p>
                <p>Para sistemas configurados no idioma turco, o instalador n&atilde;o &eacute; conclu&iacute;do com &ecirc;xito.</p>
                <p><b>Solu&ccedil;&atilde;o:</b></p>
                <p>Cancele o instalador. No sistema, altere o idioma para ingl&ecirc;s (Estados Unidos) e reinicie o instalador. </p>
                <p>Em sistemas Windows XP, &eacute; poss&iacute;vel fazer essa altera&ccedil;&atilde;o clicando em Iniciar, Painel de controle, Op&ccedil;&otilde;es regionais e de idiomas. Em seguida, selecione o idioma em uma lista suspensa na se&ccedil;&atilde;o Padr&otilde;es e formatos da caixa de di&aacute;logo.</p>
            </blockquote><br>
        </ul>
    <p align="center"><a href="#top">superior</a></p><br>

        <a name="more_info"></a>
        <h2>Mais informa&ccedil;&otilde;es</h2>
        <blockquote>
            <p>&Eacute; poss&iacute;vel encontrar not&iacute;cias, artigos, m&oacute;dulos adicionais e outras informa&ccedil;&otilde;es &uacute;teis no site do projeto NetBeans na Web. Visto que o NetBeans &eacute; um projeto de c&oacute;digo aberto, o site da Web tamb&eacute;m oferece acesso ao c&oacute;digo-fonte, a um banco de dados de erros, informa&ccedil;&otilde;es sobre a cria&ccedil;&atilde;o de m&oacute;dulos do NetBeans e muito mais. </p>
            <p>Para mais informa&ccedil;&otilde;es, visite <a href="https://netbeans.org/index_pt_BR.html">https://netbeans.org/</a>. </p>
            <p>Se quiser se manter atualizado sobre o IDE e em contato com a comunidade NetBeans, assine a lista de usu&aacute;rios do projeto NetBeans em <a href="https://netbeans.org/community/lists/index_pt_BR.html">https://netbeans.org/community/lists/</a>.
        </blockquote>
        <p align="center"><a href="#top">superior</a></p><br>

    </body>
</html>

