Version 4.5
Copyright © 2007, 2008, 2009, 2010, 2011, 2012, 2013 Lars Vogel
10.04.2013
| Revision History | |||
|---|---|---|---|
| Revision 0.1 | 18.07.2007 | Lars Vogel |
Created |
| Revision 0.2 - 4.5 | 18.05.2008 - 10.04.2013 | Lars Vogel |
bugfixes and enhancements |
Table of Contents
Most people know Eclipse as an integrated development environment (IDE) for Java. Today it is the leading development environment for Java with a market share of approximately 65%.
Eclipse is created by an Open Source community and is used in several different areas, e.g. as a development environment for Java or Android applications. Eclipse's roots go back to 2001.
The Eclipse Open Source community has over 200 Open Source projects covering different aspects of software development.
The Eclipse projects are governed by the Eclipse Foundation. The Eclipse Foundation is a non-profit, member supported corporation that hosts the Eclipse Open Source projects and helps to cultivate both an Open Source community and an ecosystem of complementary products and services.
The Eclipse IDE can be extended with additional software components. Eclipse calls these software components plug-ins. Several Open Source projects and companies have extended the Eclipse IDE.
It is also possible to use Eclipse as a base for creating general purpose applications. These applications are known as Eclipse Rich Client Platform (Eclipse RCP) applications.
The Eclipse Public License (EPL) is an Open Source software license used by the Eclipse Foundation for its software. The EPL is designed to be business-friendly. EPL licensed programs can be used, modified, copied and distributed free of charge. The consumer of EPL-licensed software can choose to use this software in closed source programs. Only modifications in the original EPL code must also be released as EPL code.
The Eclipse Foundation also validates that source code contributed to Eclipse projects is free of Intellectual Property (IP) issues. This process is known as IP cleansing.
The permissive EPL and the IP cleansing effort of the Eclipse Foundation makes reusing the source code of Eclipse projects attractive for business companies.
Eclipse requires an installed Java runtime. Eclipse 4.2 requires at least Java 5 to run.
For this tutorial you should use Java in version 6 or higher.
Java can be downloaded in two flavors, a JRE (Java runtime environment) and a JDK (Java development tools) version.
The Eclipse IDE contains its own Java compiler hence a JRE is sufficient for most tasks with Eclipse.
The JDK version of Java is required if you compile Java source code on the command line and for advanced development scenarios, for example if you use automatic builds or if you develop Java web application.
The Eclipse IDE consists out of several components. The Eclipse.org website provides pre-packaged Eclipse distributions to provide downloads for typical use cases. The Eclipse IDE for Java Developers distribution is specifically designed for standard Java development.
Download the Eclipse IDE for Java Developers package from the following URL. Ensure that you download the right version for your Java version (32 bit vs. 64 bit).
http://www.eclipse.org/downloads
The following screenshot shows the Eclipse download website for a Linux system, press on the link beside the package description, e,g, Linux 64 Bit to start the download.

The download is a
.zip
file.
After you downloaded the
.zip
file with the Eclipse distribution you unpack it to a local
directory.
Most operating systems can extract zip files in their file browser, e.g. Windows7 with a right mouse click on the file and selecting "Extract all...".
If in doubt, search with Google for "How to unzip a file on ...", replacing "..." with your operating system.
Extract Eclipse to a directory without spaces in its path and do not use a mapped network drive (Windows). Eclipse sometimes has problems with such a setup.
After unpacking the zip file, Eclipse is ready to be used; no additional installation procedure is required.
To start Eclipse double-click on the
eclipse.exe
(Microsoft Windows) or
eclipse
(Linux / Mac) file in the directory where you
unpacked Eclipse.
The system will prompt you for a workspace. The workspace is the place in which you work. See Section 5.1, “Workspace” for more details.
Select an empty directory and press the button.

Eclipse starts and shows the Welcome page. Close this page by pressing the X beside Welcome.

After closing the welcome screen you see a screen similar to the following screenshot.

The appearance of Eclipse can be configured. By default Eclipse ships with a few themes but you can also extend Eclipse with new themes. The appendix of this tutorial lists popular themes.
To change the appearance, select from the menu → → → .
The Theme selection allows you to change the appearance of your Eclipse IDE. Disabling the animations will make your Eclipse run faster.

Please note that you need to restart Eclipse to apply a new theme completely.
Eclipse provides Perspectives, Views and Editors. Views and Editors are grouped into Perspectives.
The workspace is the physical location (file path) you are working in. Your projects, source files, images and other artifacts can be stored and saved in your workspace. The workspace also contains preferences settings, plug-in specific meta data, logs etc.
You typically use different workspaces if you require different settings for your project or if you want to divide your projects into separate directories.
Your projects must not reside within the workspace directory. It is possible to refer to external resources, e.g. projects, from the workspace.
You can choose the workspace during startup of Eclipse or via the menu ( → → ) .
An Eclipse project contains source, configuration and binary files related to a certain task and groups them into buildable and reusable units. An Eclipse project can have natures assigned to it which describe the purpose of this project. For example the Java nature defines a project as Java project. Projects can have multiple natures combined to model different technical aspects.
Natures
for a project are defined via the
.project
file in the project directory.
Projects in Eclipse cannot contain other projects.
Parts are user interface components which allow you to navigate and modify data. Parts are typically divided into views and editors.

The distinction into views and editors is not based on technical differences, but on a different concept of using and arranging these parts.
A view is typically used to work on a set of data, which might be a hierarchical structure. If data is changed via the view, this change is typically directly applied to the underlying data structure. A view sometimes allows us to open an editor for a selected set of data.
An example for a view is the Package Explorer, which allows you to browse the files of Eclipse projects. If you change data in the Package Explorer, e.g. renaming a file, the file name is directly changed on the file system.
Editors are typically used to modify a single data element, e.g. a file or a data object. To apply the changes made in an editor to the data structure, the user has to explicitly save the editor content.
Editors and views can be freely positioned in the user interface.
For example the Java editor is used to modify Java source files. Changes to the source file are applied once the user selects the Save command. A dirty editor is marked with an asterisk.

A Perspective is a visual container for a set of parts. The Eclipse IDE uses perspectives to arrange parts and configure the menu and the toolbar for different development tasks. Open editors are shared between perspectives, i.e. if you have an editor open in the Java perspective for a certain class and switch to the Debug perspective, this editor stays open.
You can switch Perspectives via the → → menu entry.
The main perspectives used for Java development are the Java perspective and the Debug perspective.

You can change the layout and content within a Perspective by opening or closing parts and by re-arranging them.
To open a new part in your current Perspective use the → → menu entry. The following Show View dialog allows you to search for certain parts.

If you want to reset your current perspective to its default, use the → menu entry.
You can save the currently selected perspective via → .

The → menu entry allows you to adjust the selected perspective. For example you can hide or show toolbar and menu entries.

Eclipse provides different perspectives for different tasks. The available perspectives depend on your installation.
For Java development you usually use the Java Perspective, but Eclipse has much more predefined perspectives, e.g. the Debug perspective.
Eclipse allows you to switch to another perspective via the → → menu entry.
A common problem is that you changed the arrangement of views and editors in your perspective and you want to restore Eclipse to its original state. For example you might have closed a view.
You can reset a perspective to its original state via the → menu entry.
The default perspective for Java development can be opened via → → .
On the left hand side, this perspective shows the Package Explorer view, which allows you to browse your projects and to select the components you want to open in an editor via a double-click.
For example to open
a Java source file, open the tree under
src,
select the corresponding
.java
file and double-click it. This will open the file in the
default Java
editor.
The following picture shows the Eclipse IDE in its standard Java perspective. The Package Explorer view is on the left. In the middle you see the open editors. Several editors are stacked in the same container and you can switch between them by clicking on the corresponding tab. Via drag and drop you can move an editor to a new position in the Eclipse IDE.
To the right and below the editor area you find more views which were considered useful by the developer of the perspective. For example the Javadoc view shows the Javadoc of the selected class or method.

The application toolbar contains actions which you typically perform, e.g. creating Java resources or running Java projects. It also allows you to switch between perspectives.

The Java perspective contains useful views for working with your Java project. The following description explains the most important ones.
The Package Explorer view allows you to browse the structure of your projects and to open files in an editor via a double-click on the file.
It is also used to change the structure of your project. For example you can rename files or move files and folders via drag and drop. A right-click on a file or folder shows you the available options.

For more info on the package explorer see Section 11.1, “Package Explorer” and Section 11.4, “Link Package Explorer with editor”.
The Problems view shows errors and warning messages. Sooner or later you will run into problems with your code or your project setup. To view the problems in your project you can use the Problems view which is part of the standard Java perspective. If this view is closed you can open it via → → .

The messages which are displayed in the Problems view can be configured via the drop-down menu of the view. For example, to display the problems from the currently selected project, select Configure Contents and set the Scope to On any element in the same project.


The Problems view also allows you to trigger a Quick fix via a right mouse-click on several selected messages. See Section 14.2, “Quick Fix” for details on the Quick fix functionality.

The following section describes how to create a minimal Java application using Eclipse. It is tradition in the programming world to create a small program which writes "Hello World" to the console. We will adapt this tradition and will write "Hello Eclipse!" to the console.
This tutorial uses the naming convention that the project is named the same as the top-level package in the project.
Select
→ →
from the menu. Enter
de.vogella.eclipse.ide.first
as the project name. Select the
Create
separate folders for
sources and class files
flag.

Press the
button to create the project. A new project is created
and
displayed as
a folder. Open the
de.vogella.eclipse.ide.first
folder and explore the content of this folder.
In the following step you create a new
package. A good convention for the project and package name is to use the
same name
for the top level package
and
the
project. For example if you
name your project
com.example.javaproject
you should also use
com.example.javaproject
as top level package name.
To create the
de.vogella.eclipse.ide.first
package, select the
src
folder
, right-click on it and select
→ .

Reverse domain names should be used for packages to prevent
name
clashes. It is relatively unlikely that another company defines a
class called
test
in the
com.vogella
package because this is the reverse URL of the vogella GmbH company.
Enter the name of your new package in the dialog and press the button.

Create a Java class. Right-click on your package and select → .

Enter
MyFirstClass
as the class name and
select the
public static void main
(String[] args)
flag.

Press the button.
This creates a new file and opens the Java editor. Change the class based on the following listing.
package de.vogella.eclipse.ide.first; public class MyFirstClass { public static void main(String[] args) { System.out.println("Hello Eclipse!"); } }
You could also directly create new packages via this dialog. If you enter a new package in this dialog, it is created automatically.
Now run your code. Either right-click on your Java class in the Package Explorer or right-click in the Java class and select → .

Eclipse will run your Java program. You should see the output in the Console view.

Congratulations! You created your first Java project, a package, a Java class and you ran this program inside Eclipse.
To run the Java program outside of the Eclipse IDE you need to
export
it as a
JAR
file. A
JAR
file is the standard distribution format for Java applications.
Select your project, right-click it and select the Export menu entry.

Select
JAR file
and select the
button.
Select your project and enter
the
export destination and a
name
for the
JAR
file. I named it
myprogram.jar.


Press The
button. This creates a
JAR
file in your selected output
directory.
Open a command shell, e.g. under Microsoft Windows select
→
and type
cmd
and press enter. This should open a console.
Switch to the directory which contains the
JAR
file
, by
typing
cd path. For example if
your
jar is located in
c:\temp
use the following command.
cd c:\temp
To run this program include the
JAR
file
into your
classpath. The
classpath
defines which Java classes are available to the Java
runtime. You can
add a
jar
file to the classpath with the
-classpath
option.
java -classpath myprogram.jar de.vogella.eclipse.ide.first.MyFirstClass
Type the above command in the directory you used for the export and you see the "Hello Eclipse!" output in your command shell.

You can export and import Eclipse projects. This allows you to share projects with other people and to import existing projects.
To export Eclipse projects, select → → → and select the projects you want to export.


The primary way of navigating through your project is the Package Explorer. You can open nodes in the tree and open a file in an editor by double-clicking on the corresponding entry in the Package Explorer.

The drop-down menu in the Package Explorer allows you to filter the resources which should be displayed or hidden.


You can close projects via right-click and by selecting the Close Project menu entry. Alternatively if you work on a project you can close all unrelated projects via right-click and by selecting the Close Unrelated Projects menu entry.
Closing projects saves memory in Eclipse and can reduce the build time. To open a closed project double-click on it, or right-click it and select Open Project.
Eclipse ignores closed projects, e.g. the Problems view does only show errors of closed projects. This typically helps to focus your attention on the project.
You can use the filter functionality for the Package Explorer view to hide the closed projects.
The
Package Explorer
view
allows you to display the associated file from
the
currently selected
editor. For example if you are working on the
Foo.java
file in the Java
editor
and
switch to the Java
editor
of the
Var.java
file,
then the corresponding file will be selected in
the
Package Explorer
view.
To activate this behavior, press the button in the Package explorer view as depicted in the following screenshot.

You can also use other means than the Package Explorer to navigate your source code. The following description lists the most important ones.
You can navigate between the classes in your project via the Package Explorer view as described before. You can navigate the tree and open a file via double-click.
In addition you can open any class by positioning the cursor on the class in an editor and pressing F3. Alternatively, you can press Ctrl+Shift+T. This shows the following dialog in which you can enter the class name to open it.

You can also search for package names. Each part of the package name
must end with a
.
(the
dot
character)
so that the
Open Type Dialog
can identify it as package.
You only need to specify part of each
segment of the package name.
Assume for example that you search for
the
org.eclipse.swt.widgets.Button
class. To
find this class you can use the search term
org.eclipse.swt.widgets.Button
or
o.e.s.w.Button
or
o.Button.

The
Open Type Dialog
also supports
camel-case
like
search, e.g. it matches capital letters in the class name. For
example if you would search for the
OnTouchListener
class you could use
OTL
or
OToList
as search term.

To avoid suffix matching you can add a space after the class name.
For
example you can type
Selection
(there is a space after selection) to match the
Selection
class but not the
SelectionListener
class. Wildcards like * are also supported.
In lot of cases you can also use the mouse to navigate to or into an element if you press the Ctrl key. For example press the Ctrl key and (left) click with the mouse on the name of a class to jump into the class declaration.
Similar to the left mouse click combined with the Ctrl, you can use the F3 key to go into a class.
If you right-click in your Java editor, you can select the Quick Outline option which shows you an outline of your Java class with the option to filter.

The shortcut for opening the Quick Outline is Ctrl+O. By default Quick Outline shows only the direct members and fields of the class. Press Ctrl+O again to show also the inherited members and fields.
The default look of the Quick Outline option is similiar to the Quick Outline view of the Java perspective.
The type hierarchy of a class shows you which classes it extends and which interfaces it implements. You can use the type hierarchy to navigate to one of these elements.
To open the type hierarchy of the selected class, right-click in the editor and select Open Type Hierarchy (Shortcut: F4) or Quick Type Hierarchy (Shortcut: Ctrl+T).
Via the → menu (Shortcut: Ctrl+H) you can open the search dialog of Eclipse.
Use the Java Search tab to search for Java elements, e.g. methods.

The Search view shows the search results for the selected scope. You can double-click on a search entry to navigate to the corresponding position in the editor. The currently selected search result is also indicated via an arrow in the left border of the editor.

Use the File Search tab to search for text.

Eclipse associates file extensions with the default tab. You can customize the available search tabs via the Customize button in the Search dialog. Via the Remenber the last used page you can configure Eclipse to use your last tab as default.


The Search view allows you to delete search results via the Delete key.
You can use the Ctrl+J shortcut to activate Incremental Find. This allows you to search in the current active editor for a text which is displayed in the status line as depicted by the following screenshot. Repeat Ctrl+J in order to move to the next occurrences of the current search term.

The advantage of this search is that no pop-up dialog is opened which blocks other elements in the Eclipse IDE.
If you have selected an element in the editor you can use the Ctrl+K shortcut to search for the next occurrence of the selected text and Ctrl+Shift+K for the previous element.
You can also navigate via the annotation buttons, e.g. for jumping to the next error or warning in your source code.

By pressing the buttons you can navigate to the related annotations. You can also use the keyboard shortcut Ctrl+. (Ctrl plus the dot sign) for selecting the next annotation or Ctrl+, for selecting the previous annotation.
The following screenshot shows source code with two warnings and one error and you can navigate between the corresponding code via the annotation buttons.

Which annotations are relevant for navigation can be configured via the drop-down menu of the toolbar. This selection is highlighted in the following screenshot.

You can also activate the breadcrumb mode for the Java editor which allows you to navigate the source code directly from the Java editor.
You can activate this mode via right-click in the editor and by selecting the Show in Breadcrumb entry.

This allows you to navigate the source code from the editor as depicted in the following screenshot.

To hide it again, right-click on a breakcrump entry and select Hide Breadcrumb.

Content assist is a functionality in Eclipse which allows the developer to get context sensitive code completion in an editor upon user request.
It can be invoked by pressing Ctrl+Space
For example type
syso
in the editor of a Java source file
and
then press
Ctrl+Space. This will replace
syso
with
System.out.println("").
If you have a reference to an object, for example the object
person
of the type
Person
and
need to see its
methods, type
person.
and
press
Ctrl+Space.

Whenever Eclipse detects a problem, it will underline the problematic text in the editor. Select the underlined text and press Ctrl+1 to see proposals how to solve this problem. This functionality is called Quick Fix.
For example type
myBoolean = true;
If myBoolean is not yet
defined, Eclipse will highlight it as an
error. Select the variable
and press
Ctrl+1, Eclipse will
suggest creating a field or
local variable.

Quick Fix is extremely powerful. For example it allows you to create new local variables and fields as well as new methods and new classes. Or it can put try-catch statements around your exceptions. It can also assign a statement to a variable and much more.
Quick Fix also gives several options for code changes on code which does not contain errors, e.g. it allows you to convert a local variable to a field.
Eclipse has several possibilities to generate code for you. This can save significant time during development.
For example Eclipse can override methods from superclasses and
generate the
toString(),
hashcode()
and
equals()
methods. It
can also generate getter and setter methods for attributes
of
your Java class.
You can find these options in the Source menu.

To test the source generation, create the following class in your
de.vogella.eclipse.ide.first
project.
package de.vogella.eclipse.ide.first; public class Person { private String firstName; private String lastName; }
Select → , mark both fields and press the OK button.

Select → , select again both of your fields and then the OK button.
Select → , mark again both fields and press the OK button.
You created the following class:
package de.vogella.eclipse.ide.first; public class Person { private String firstName; private String lastName; public Person(String firstName, String lastName) { super(); this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "Person [firstName=" + firstName + ", lastName=" + lastName + "]"; } }
In this exercise you practice the usage of code generation and the usage of the Content Assists functionality.
Create the
com.vogella.ide.todo
package
and the
following class.
package com.vogella.ide.todo; import java.util.Date; public class Todo { private long id; private String summary = ""; private String description = ""; private boolean done = false; private Date dueDate; }
Select → to generate a constructor using all fields.
Use the → to create getters and setters for all fields.
The resulting class should look like the following listing.
package com.vogella.ide.todo; import java.util.Date; public class Todo { private long id; private String summary = ""; private String description = ""; private boolean done = false; private Date dueDate; public Todo(long id, String summary, String description, boolean done, Date dueDate) { this.id = id; this.summary = summary; this.description = description; this.done = done; this.dueDate = dueDate; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isDone() { return done; } public void setDone(boolean done) { this.done = done; } public Date getDueDate() { return dueDate; } public void setDueDate(Date dueDate) { this.dueDate = dueDate; } }
Use Eclipse to generate a
toString()
method for the
Todo
class based on the
id
and
summary
field.
This can be done via the Eclipse menu
→ .
Also
use Eclipse to generate a
hashCode()
and
equals()
method based on the
id
field. This can be done via the
Eclipse menu
→ .
Create a new class called
TodoProvider.
Create the following static method in your
TodoProvider
class.
// Helper method to get a list // of Todo objects // Example data, change if you like public static List<Todo> createInitialModel() { ArrayList<Todo> list = new ArrayList<Todo>(); list.add(createTodo("SWT", "Learn Widgets")); list.add(createTodo("JFace", "Especially Viewers!")); list.add(createTodo("DI", "@Inject looks interesting")); list.add(createTodo("OSGi", "Services")); list.add(createTodo("Compatibility Layer","Run Eclipse 3.x")); return list; } private static Todo createTodo(String summary, String description) { return new Todo(current++, summary, description, false, new Date()); }
Write another
TodoProviderTest
class
with a
public static void main (String[] args)
method.
In your main method call the
createInitialModel
method and validate that the returned number of
items is 5.
If another number than 5 is returned, throw a
RuntimeException. If the correct number is returned, write the String "Correct" to
the
Console
view.
Use
Content assist
to create the
System.out.println()
based on
syso
for you.


Refactoring is the process of restructuring the code without changing its behavior. For example renaming a Java class or method is a refactoring activity.
Eclipse supports several refactoring activities, for example renaming or moving.
For example to use the Rename refactoring, you can right-click on your class (in the editor or Package Explorer) and select → to rename your class. Eclipse will make sure that all calls in your Workspace to your class or method are renamed.
The following screenshot shows how to call the Rename refactoring for a class. The cursor is positioned on the class and the context menu is activated via a right-click on the class.

The most important refactoring are listed in the following table.
Table 1. Refactoring
| Refactoring | Description |
|---|---|
| Rename | Rename a variable or class |
| Extract Method | Creates a method based on the selected code in the editor |
| Extract Constant |
Lots of refactorings are also available via the Ctrl+1 shortcut (quick fix). Select a certain part of your code and press Ctrl+1 to see possible refactorings which are possible at the select position.
Eclipse has many more refactorings. The available options depend on the selection in the Java editor. In most cases you should get an idea of the performed action by the naming of the refactoring operation.
For the next examples change the
MyFirstClass
class to
the following code.
package de.vogella.eclipse.ide.first; public class MyFirstClass { public static void main(String[] args) { System.out.println("Hello Eclipse!"); int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println(sum); } }
A useful refactoring is to mark code and create a method from the selected code. To use this in this exercise, mark the coding of the "for" loop, right click on the selection and select → . Use calculateSum as the name of the new method.

After this refactoring the class should look like the following code.
package de.vogella.eclipse.ide.first; public class MyFirstClass { public static void main(String[] args) { System.out.println("Hello Eclipse!"); int sum = 0; sum = calculateSum(sum); System.out.println(sum); } private static int calculateSum(int sum) { for (int i = 1; i <= 100; i++) { sum += i; } return sum; } }
You can also extract strings and create constants based on the strings. Mark for this example the Hello Eclipse! string in your source code, right-click on it and select → . Name your new constant "HELLO".

The string is now defined as a constant.
package de.vogella.eclipse.ide.first; public class MyFirstClass { private static final String HELLO = "Hello Eclipse!"; public static void main(String[] args) { System.out.println(HELLO); int sum = 0; sum = calculateSum(sum); System.out.println(sum); } private static int calculateSum(int sum) { for (int i = 1; i <= 100; i++) { sum += i; } return sum; } }
Eclipse provides a lot of shortcuts to work efficiently with the IDE. For a list of the most important Eclipse shortcuts please see Eclipse Shortcuts
You can define in Eclipse that a project is dependent on another project. For this select your project, right-click on it and select Properties.
Select Java Build Path and the Projects tab.

If you add a project to the build path of another project, you can use its classes in Eclipse.
This only works within Eclipse, outside Eclipse you need to create Java libraries for the projects and add them to the classpath of your Java application.
If the libraries should be distributed with your project you can store the JAR files directly in your project.
For example you can
create a new Java project
de.vogella.eclipse.ide.jars. Then, create
a new folder called
lib
by right-clicking on
your project and selecting
→ .

From the menu select
→ → → .
Select the Java library you want to import
and select the
lib
folder
as target. Alternatively, just copy and paste the
jar
file into the
lib
folder.
You can add this library to your classpath, right-click on the JAR file and select → .
To manage your classpath, right-click on your project and select Properties. Under → select the button.
The following example shows how the result would look like,
if
the
junit-4.4.jar
file
had been added to the project.

After adding it to the classpath, Eclipse allows you to use the
classes
contained
in the
JAR
file in the project . Outside Eclipse you
still need to configure your
classpath, e.g. via the
MANIFEST.MF
file.
You can open any class by positioning the cursor on the class in an editor and pressing F3. Alternatively, you can press Ctrl+Shift+T. This will show a dialog in which you can enter the class name to open it.
If the source code is not available, the editor will show the bytecode of that class.
This happens for example if you open a class from a the standard Java library without attaching the source code to it.
To see the source code of such a class, you can attach a source archive or source folder to a Java library. Afterwards the editor shows the source instead of the bytecode.
Attaching the source code to a library also allows you to debug this source code.
The Source Attachment dialog can be reached in the Java Build Path page of a project. To open this page right-click on a project and select → . On the Libraries tab, expand the library's node, select the Source attachment attribute and press the button.
In the Location path field, enter the path of an archive or a folder containing the source.
The following screenshot shows this setting for the standard Java
library. If you
have
the Java Development Kit (JDK) installed, you
should find the
source
in the JDK installation folder. The file is
typically called
src.zip.

It is also possible to add Javadoc to a library which you use.
Download the Javadoc of the JAR file and put it somewhere in your filesystem.
To enter the location of the Javadoc, open the
Java Build Path
via a
right-click on a project and select
→ . On the
Libraries
tab expand the
library's node, select the
Javadoc location
attribute and press the
button.
Enter the location to the file which contains the Javadoc.

The Eclipse IDE contains a software component called
Update Manager
which allows you
to install and
update
software components. Installable
software components are
called
features
and consist of
plug-ins.
These features are contained in so-called update sites or software sites. A update site contains installable software components and additional configuration files and can for example be located on a webserver.
These configuration files provide aggregated information about these software components in the update site. The update functionality in Eclipse uses this information to determine which software components are available in which version. This allows the Eclipse update functionality to download only components which are new or updated.
If you are behind a network proxy you have to configure your proxy via the → → → preference setting otherwise Eclipse may not able to reach the update sites.
To update your Eclipse installation, select → . The system searches for updates for the already installed software components. If it finds updated components, it will ask you to approve the update.
To install a new functionality, select → .

From the Work with list, select or enter an URL from which you would like to install new software components. Entering a new URL adds this URL automatically to the list of available update sites.
To explicitly add a new update site, press the button and enter the new URL as well as a name for the new update site.
The following update sites contain the official Eclipse components.
# Eclipse 4.3 (Kepler release) http://download.eclipse.org/releases/kepler #Eclipse 4.2 (Juno release) http://download.eclipse.org/releases/juno
If you select a valid update site, Eclipse allows you to install the available components. Check the components which you want to install.

To install certain components you have to uncheck the Group items by category checkbox because not all available plug-ins are categorized. If they are not categorized, they will not be displayed, unless the grouping is disabled.
Eclipse also contains a client which allows installing software components from the Eclipse Marketplace client. The advantage of this client is that you can search for components, discover popular extensions and see descriptions and ratings.
Compared to the update manager you do not have to know the URL for the software site which contains the installable software components.
Not all Eclipse distributions contain the Marketplace client by default. You may need to install the Marketplace client software component into Eclipse before you can use it. The following screenshot shows how to install it from one of the official Eclipse update sites.

To open the Eclipse Marketplace select → .

You can use the Find box to search for components. Pressing the button starts the installation process.
Eclipse plug-ins are distributed as
jar
files.
If you want to use an Eclipse plug-in directly or do not
know
the
update
site
for it,
you
can place it in the
dropins
folder of your Eclipse installation
directory. Eclipse monitors this
directory and during a (re-)start of your IDE, the Eclipse update
manager installs
and removes plug-in based on the files contained in
this directory.
You should not modify
the content of the Eclipse
plugins
directory directly. If you want to install plug-ins put them into the
dropins
folder, if you want to remove it delete the JAR from this folder.
Plug-ins are typically distributed as
jar
files. To add a
plug-in to your Eclipse installation, put the plug-in
.jar file into
the
Eclipse
dropins
folder
and
restart Eclipse. Eclipse should detect
the
new
plug-in and
install it
for you.
If you remove plug-ins from the
dropins
folder and restart Eclipse these plug-ins are automatically removed
from your Eclipse installation.
Eclipse allows you to export a file which describes the installed Eclipse components. During the export the user can select which components should be included into this description file.
Other users can import this description file into their Eclipse installation and install the components based on this file.
This way Eclipse installation can be kept in sync with each other.
To export a description file, select → → → and select the components which should be included into your description file.

To install the described components in another Eclipse installation, open the exported file with → → → and follow the wizard. The wizard allows you to specify the components which should be installed.
The Eclipse update manager has a component called director which allows you to install new features via the command line.
For example the following command will install the components EGit,
Mylyn and EMF into
an Eclipse instance. You need to start this command
in the command line and it assumes that you are in a directory which
contains your Eclipse installation in a folder called
eclipse.
eclipse/eclipse \ -application org.eclipse.equinox.p2.director \ -noSplash \ -repository \ http://download.eclipse.org/releases/kepler \ -installIUs \ org.eclipse.egit.feature.group,\ org.eclipse.jgit.feature.group,\ org.eclipse.emf.sdk.feature.group,\ org.eclipse.mylyn_feature.feature.group,\ org.eclipse.wst.xml_ui.feature.feature.group,\ org.eclipse.mylyn.java_feature.feature.group,\ org.eclipse.mylyn.pde_feature.feature.group
The feature names which you need for this operation can be seen on the second page of the standard installation dialog of the Eclipse update manager.

The behavior of the Eclipse IDE can be controlled via the Preference settings. Select → to open the preference settings dialog. You can use the filter box to search for specific settings.

Correctly configuring Eclipse to your need can largely improve your productivity. Most of these preference settings are specific to your workspace.
Eclipse can make typing more efficient by placing semicolons at the correct position in your source code.
In the Preference setting select → → . In the Automatically insert at correct position selection enable the Semicolons checkbox.

Afterwards you can type a semicolon in the middle of your code and Eclipse will position it at the end of the current statement.
Eclipse allows to escape text automatically if it is pasted into a String literal. For example you can copy HTML code and paste it into a String in your Java source. Eclipse would escape the text automatically for you.
Activate this setting via → → → → → →
Now you can paste text that should be escaped. The following code snippet shows an example for the resulting code if you paste HTML code containing a link into a string literal.
# paste <a href="tutorials.html">Tutorials</a> # between "" of String s = "" # results in: String s = "<a href=\"tutorials.html\">Tutorials</a>";
You can configure Eclipse to highlight the matching brackets of a code block in the source code editor.

Before the change you would not see the enclosing brackets afterwards they will be slightly highlighted. This helps to see in which block you are.


Eclipse can format your source code and organize your import statements automatically on each save of the Java editor. This is useful as the Save (shortcut: Ctrl+S) is easy to reach.
You can find this setting under → → .

Import statements will only be automatically created, if Eclipse finds only one valid import. If Eclipse determines more than one valid import, it will not add import statements automatically. In this case you still need to right-click in your editor and select → (shortcut: Shift+Ctrl+O).
The Save Actions setting automatically adds required import statements to your source code if there is only one possible import.
Alternatively or if there are several possible imports, you can use the Organize Imports (shortcut: Ctrl+Shift+O). If there are several alternatives, Eclipse suggests all available packages and the user has to select the right one.
To following shows the available packages for the
List
class in the
Organize Imports
dialog.

If you never use certain packages, for example AWT or Swing, you can exclude these packages from Eclipse via the → → → → setting.
Press the buttons to add a specific package or the button to use wildcards. The setting in the following screenshot excludes all AWT packages from the possible imports and other Java search functionality in Eclipse.

Please note that Eclipse shows (in its default configuration) only the packages that are used in the current workspace. If you want to exclude standard Java packages, you have to create at least one Java project.
Eclipse can override existing method calls, in case you trigger a code completion in an existing statement. Eclipse can also try to guess the correct actual parameters for a method call.

With the first setting you can override methods in the middle of a statement via the Ctrl+Space code assists shortcut.

Without this setting you would get the following result, which results in a syntax error.

With this setting you get the following result.

You can define how the Java compiler should react to certain common programming problems, e.g. you can define that an assignment of a variable which has no effect, e.g. x=x, causes an error in Eclipse.
You can configure these checks in the Eclipse preferences settings via the → → entry.

You can enable annotation based null checks in Eclipse via the setting highlighted in the following screenshot.

After enabling this setting you can use the
@NonNull
annotation on method parameters or variable definitions to indicate
that these are not allowed to be NULL. You can also use the
@Nullable
annotation to define that a variable can be NULL.
Eclipse allows to start an application via the Run button in the menu or via the Ctrl+F11 shortcut. By default Eclipse will determine if the currently selected file is executable and try to start that. If is sometimes confusing, you can configure the Eclipse IDE to start always the last started program.
To configure that select → → → and define that always the previous launched application should be launched.

The Editors which are available to open a file can be configured via → → → → .
The button in this preference dialog allows to set the default editor for a certain file extension, e.g. this is the editor which will be used by default if you open a new file with this extension.
The other configured editors can be selected, if you right-click on a file and select In the sub-menu you see the available editors. The available editors depend on your Eclipse installation.

Eclipse will remember the last editor you used to open a file and use this editor again the next time you open the file.
You can export your preference settings from one workspace via → → → .
Eclipse does allow to export some preference settings separately but for most of them you have to select the Export all flag.

Similarly you can import them again into another workspace via → → → .
You can also configure certain preference settings on a project basis. To do this select your project, right-click on it and select Properties. For example on the → you can select the Enable project specific settings checkbox on configure the save action on a project basis.

This creates a
.settings
folder which you can add to your version control system to ensure
that every developer uses the same setting.
You can specify default values for preferences via file which is
typically called
plug_customization.ini.
In this file you can setup default values for preference settings.
For
example the following will setup a default type filter for the
java.awt
and
javax.swing
package.
org.eclipse.jdt.ui/org.eclipse.jdt.ui.typefilter.enabled=java.awt.*;javax.swing.*;
You link to this file via your
eclipse.ini
file in your Eclipse
installation directory.
The following example
eclipse.ini
links to the file and it
assumes
that you created the
plug_customization.ini
file in the Eclipse installation directory.
-pluginCustomization plugin_customization.ini -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120522-1813 -product org.eclipse.epp.package.rcp.product --launcher.defaultAction openFile -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -XX:MaxPermSize=256m -Xms40m -Xmx512m
To identify a key for a certain preference setting you can export existing preference settings via the following approach.
start a new workspace
change the preference
export all preferences
search the key in the exported file
You need
to remove the scope (e.g. /instance/) before
copying
it into
the
plug_customization.ini
file.
In Eclipse you can create templates for code snippets. This code snippets can be activated via autocomplete (Ctrl+Space).
For example, assume that you are frequently creating
public void name(){}
methods. You could define a template which creates the
method body
for
you.
To create a template for this, select the menu → → → → .

Press the New button. Create the template shown in the following screenshot.

${cursor}
indicates
that the cursor should be placed at this
position after
applying the
template.
In this example the name npm is your keyword for code completion.
Now every time you type npm in the Java editor and press Ctrl+Space the system will allow you to replace your keyword with your template.

Eclipse allows you also to specify the rules for the code formatter. These rules are used by Eclipse to format your source code. This allows you for example to define the settings for the usage of whitespace or for line wrapping.
You find the settings under → → → → .
Press the button to create a new set of formatting rules or press the button to adjust an exising profile.

Eclipse can generate source code automatically. In several cases comments are added to the source code.
Select → → → → to change the code generation templates.
In the code tree you have the templates. Select for example → and press the Edit button to edit this template and to remove the "todo" comment.

Your Eclipse installation contains a file called
eclipse.ini
which allows you to configure the memory parameters for the
Java
virtual
machine which runs the Eclipse IDE. For example
the
-Xmx
parameter can be used to define how large the Java heap size can
get.
-Xms
defines the initial heap size of the Java virtual machine.
The following listing shows an example
eclipse.ini
file. The parameters after -vmargs configure the Java virtual
machine.
On a modern machine assigning 1024 MB or more to the Java
virtual
machine is good practice to run Eclipse faster.
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Xms512m -Xmx1024m -XX:+UseParallelGC -XX:PermSize=256M -XX:MaxPermSize=512M
Eclipse allows you to configure it via startup parameters. This requires that you start Eclipse from the command line or that you configure your launcher links to include these parameters.
The following table shows important parameters.
Table 2. Workspace startup parameters
| Parameter | Description |
|---|---|
| -data workspace_path | Predefine the Eclipse workspace |
| -showLocation | Enables the display of the current workspace directory in the header of the running IDE |
For example if you want to start Eclipse under Microsoft
Windows
using
the
c:\temp
directory as
workspace
you can start Eclipse via the following command
from the
command line.
c:\eclipse.exe -data "c:\temp"
Depending on your platform you may have to put the path name into double quotes.
You find all available runtime options in the Eclipse help if you search for the "Eclipse runtime options" term.
Eclipse keeps a local history of files which have changed. Every time an editable file is saved, the Eclipse runtime updates the local history of that file and logs the changes that have been made. This local history can then be accessed and used to revert the file changes or to compare against a previous version.
To compare the current version of a file with a local version stored by Eclipse, right-click on the file and select → from the context menu.
Eclipse opens the History view. If you double-click on an older version of the file, the Compare view shows the differences as depicted in the following screenshot.

The Eclipse IDE allows you to organize your project into working sets so that you can hide certain resources.
You will create more and more projects in your development career. Therefore the data in your workspace grows and it is hard to find the right information.
You can use working sets to organize your displayed projects / data. To set up your working set select the → →

Press the button on the following dialog to create a working set.

On the next dialog select Resource, press the button and select the projects you would like to see and give it a name.



You can now filter the displayed files in the Package Explorer based on the created working set.

You can also use the working set to structure your projects in your workspace. For this select Working Sets from the context menu of the Package Explorer view.


You can place markers in the code which you can later access via the Task view.
You can use
// TODO,
// FIXME
or
// XXX
tags in your code to add task reminders.
This indicates a task for Eclipse. You find those in the Task view of Eclipse. Via double-clicking on the task you can navigate to the corresponding code.
You can open this view via → → .
For example, add a TODO to your
MyFirstClass
class to see it in the Tasks
view.
package de.vogella.eclipse.ide.first; public class MyFirstClass { private static final String HELLO = "Hello Eclipse!"; public static void main(String[] args) { // TODO Provide user interface System.out.println(HELLO); int sum = 0; sum = calculateSum(sum); System.out.println(sum); } private static int calculateSum(int sum) { for (int i = 0; i <= 100; i++) { sum += i; } return sum; } }
Close the editor for the
MyFirstClass
class. If you now double-click on the
tasks, the Java editor opens
again and
the TODO comment is selected.

The Task view shows only the tasks from the currently open projects. See Section 11.3, “Closing and opening projects”.
The Eclipse help system is available from within your Eclipse installation as well as online.
With your running Eclipse IDE you can access the online help via → . This will start a new window which shows you the help topics for your currently installed components.

Online you find the online help under the following link: Eclipse online help . The online help is version dependent and contains the help for all Eclipse projects included in the selected release. The above link points to the online help of the current release.
The Eclipse homepage also contains a list of relevant resources about Eclipse and Eclipse programming. You find these resources under the following link: Eclipse resources.
You also find several tutorials about the Eclipse IDE on the following webpage: vogella Eclipse IDE tutorials.
Due to the complexity and extensibility of Eclipse you will need additional resources to help you resolve your specific problems. Fortunately the web contains several resources which can help you with your Eclipse problems.
Currently the best places to ask questions are the Eclipse forums and Stack Overflow .
The Eclipse forums offer several topic specific forums in which you can post and answer questions. To post questions in the Eclipse forums you need a valid user account in the Eclipse bug tracker. The advantage of the Eclipse forums is that, depending on the topic, developers of Eclipse projects (Eclipse committers) are also active there and might directly answer your question.
Stack Overflow also requires a user account and its community is also very active. Stack Overflow does not have separate forums for specific questions. In Stack Overflow you tag your questions with the relevant keyword, e.g. Eclipse and people search for them or subscribe to them.
Both places are excellent places to ask questions. If you ask a question it is in general good advice to be polite and to give a good error description as this motivates people to give you high quality answers.
Ensure that you search the forums and mailing lists for solutions for your problem since often somebody else already asked the same question earlier and the answer is already available.
Eclipse has a public bug tracker based on Bugzilla. Mozilla Bugzilla is an Open Source project.
This bugtracker can be found under https://bugs.eclipse.org/bugs/. Here you can search for existing bugs and review them.
To participate actively in the Eclipse bugtracker you need to create a new account. This can be done by pressing the Open a New Account link.

Once you have a user account, you can login to the Eclipse bug tracker. This allows you to comment on existing bugs and report new ones.
The user for the Eclipse forum and the bug tracker is the same.
To learn how to debug Eclipse Java programs you can use Eclipse Debugging
To learn Java Web development you can use with Servlet and JSP development . If you want to develop rich stand-alone Java clients you can use Eclipse RCP You can extend Eclipse with Eclipse Plug-ins .
Good luck in your journey of learning Java!
Before posting questions, please see the vogella FAQ. If you have questions or find an error in this article please use the www.vogella.com Google Group. I have created a short list how to create good questions which might also help you.
Eclipse Forum for asking questions and providing feedback.
Eclipse Bug Tracker for reporting errors or feature requests.
vogella Training Android and Eclipse Training from the vogella team
Android Tutorial Introduction to Android Programming
GWT Tutorial Program in Java and compile to JavaScript and HTML
Eclipse RCP Tutorial Create native applications in Java
JUnit Tutorial Test your application
Git Tutorial Put everything you have under distributed version control system