<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<TITLE>Getting Projects Out of Dark from an Eclipse Workspace</TITLE>
	<meta name="description" content="Getting Projects Out of Dark from an Eclipse Workspace">
  <link rel="stylesheet" type="text/css" href="../../netbeans.css">
</HEAD>
<body>

<h1>Importing an Eclipse
Project from an Eclipse Workspace</h1>

<P>
This section walks through the procedure of importing an
Eclipse project from an Eclipse Workspace. When using the option to
import Eclipse projects, NetBean will automatically determine any
project dependencies and import those as well.</P>

<p>To
initiate an import of an Eclipse project, ignoring any project
dependencies that may exist, select the File &gt; Import Project &gt;
Eclipse Project menu in the NetBeans IDE. 
This will display Import Eclipse Project wizard. From the Import Eclipse
Project wizard, specify the location of the Eclipse Workspace. 

An example is shown below.</P>

<P><img src="../../images_www/switch/EclipseProjectImportFromWorkspace_html_249b1d0a.png" NAME="Graphic8" WIDTH=584 HEIGHT=355 BORDER=0><BR CLEAR=LEFT><BR>

<p><h2>Selecting the Eclipse
Projects to Import</h2>

<P>Once you have specified the location of
the Eclipse Workspace, press Next to display the Project to Import
portion of the Import Eclipse Project wizard. 
This portion of the wizard asks you which Eclipse projects you would
like to import and the location for the the imported project.

<P>If there are project dependencies
between a selected Eclipse project to import, NetBeans will
automatically determine this and mark those dependent projects for
import also. In the example below, the MainProject was initially
selected, but since MainProject depends on the HelperProject it is
automatically marked for importing too. Notice the checkbox next to
HelperProject is also marked along with the checkbox for MainProject.</P>

<P><img src="../../images_www/switch/EclipseProjectImportFromWorkspace_html_m4d8cc032.png" NAME="Graphic9" WIDTH=592 HEIGHT=337 BORDER=0><BR CLEAR=LEFT><BR>

<P>To complete the Import Eclipse Project
wizard press the Finish button.</P>

<P>If NetBeans discovers discrepancies
in the Eclipse project while processing the Eclipse project
information and believes it can resolve
those discrepancies automatically, NetBeans
will display a Warning dialog showing the Eclipse project
discrepancies it has found and the
corrective action NetBeans will take. If you see this dialog, there
is no additional work required by you. The dialog is meant to be an
informative dialog to let you know the NetBeans Eclipse Project
Importer has found discreprancies in the Eclipse project NetBeans is
importing. For more information see <A HREF="eclipse-discrepancies.html">Handling
Eclipse Project Discrepancies</A>.</P>

<P>If the NetBeans Eclipse Project Importer discovers problems in an
Eclipse project such as a project resource that could not be found,
NetBeans will display a Reference Problems warning dialog along with
appropriate actions for you to take in order to resolve these Eclipse
project references.

This dialog is presented to the user so that he or she may correct
problems that have been detected in the Eclipse project while the
NetBeans Eclipse Project Importer is processing the Eclipse project
information.

<P>If there were no Eclipse project reference problems discovered by
NetBeans during the Eclipse project import which require a resolution,
you may begin using the NetBeans IDE. For instance, you can immediately
use the NetBeans IDE Project Viewer to traverse the imported project(s)
or you can begin running your newly imported Eclipse project(s).


<p><h2>Viewing the Imported
Projects</h2>

<P>Once NetBeans has completed the Eclipse
project import, you view the imported projects in NetBeans by opening
the Projects window. Below is an example screen shot of the NetBeans
Projects window showing imported Eclipse
projects called MainProject and HelperProject. Notice that NetBeans
has preserved the project dependencies.</P>

<P><img src="../../images_www/switch/EclipseProjectImportFromWorkspace_html_3e5987ad.png" NAME="Graphic18" WIDTH=164 HEIGHT=191 BORDER=0><BR CLEAR=LEFT><BR>

<p><h2>Running the Imported
Projects</h2>

<P>Once you have imported your Eclipse
projects you can run them in NetBeans by opening the NetBeans
Projects window, right clicking on the project to run and selecting
Run as shown below.</P>

<P><img src="../../images_www/switch/EclipseProjectImportFromWorkspace_html_m76226f2e.png" NAME="Graphic19" WIDTH=342 HEIGHT=374 BORDER=0><BR CLEAR=LEFT><BR>

<P>That's it! As you can see, migrating Eclipse projects to
NetBeans is very easy with the NetBeans Eclipse Project Importer.</P>

</BODY>
</HTML>
