Compiler

The compiler preferences are separated in the following sections:

Problems

Option

Description

Default

Unreachable code

Unreachable code can optionally be reported as an error, warning or simply ignored. The byte code generation will always optimized it out. Note that according to the Java language specification, unreachable code should be an error.

Error

Unresolvable import statements

An import statement that cannot be resolved might optionally be reported as an error, as a warning or ignored. Note that according to the Java language specification, unresolved import statements should be an error.

Error

Unused local variables (i.e. never read)

When enabled, the compiler will issue an error or a warning for unused local variables (i.e. variables never read from).

Ignore

Unused parameters (i.e. never read)

When enabled, the compiler will issue an error or a warning for unused method parameters (i.e. parameters never read from).

Ignore

Unused imports

When enabled, the compiler will issue an error or a warning for unused import reference.

Warning

Unused private types, methods or fields

When enabled, the compiler will issue an error or a warning whenever a private method or field is declared but never used within the same unit.

Ignore

Usage of non-externalized strings

When enabled, the compiler will issue an error or a warning for non externalized String literal (i.e. non tagged with //$NON-NLS-<n>$). 

Ignore

Usage of deprecated API

When enabled, the compiler will signal use of deprecated API either as an error or a warning.

Warning

Signal use of deprecated API inside deprecated code

When enabled, the compiler will signal use of deprecated API inside deprecated code. The severity of the problem is controlled with option "Usage of deprecated API".

Off

Maximum number of problems reported per compilation unit

Specifies the maximum number of problems reported per compilation unit. 

100

Style

Option

Description

Default

Methods overridden but not package visible

A package default method is not visible in a different package, and thus cannot be overridden. When enabling this option, the compiler will signal such scenario either as an error or a warning.

Warning

Methods with a constructor name

Naming a method with a constructor name is generally considered poor style programming. When enabling this option, the compiler will signal such scenario either as an error or a warning.

Warning

Conflict of interface method with protected 'Object' method

When enabled, the compiler will issue an error or a warning whenever an interface defines a method incompatible with a non-inherited Object method. Until this conflict is resolved, such an interface cannot be implemented, e.g.

interface I {
   int clone();
}

Warning

Hidden catch blocks

Locally to a try statement, some catch blocks may hide others , e.g.

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}.

When enabling this option, the compiler will issue an error or a warning for hidden catch blocks corresponding to checked exceptions.

Warning

Non-static access to a static member

When enabled, the compiler will issue an error or a warning whenever a static field or method is accessed with an expression receiver. A reference to a static member should be qualified with a type name.

Warning

Access to a non-accessible member of an enclosing type

When enabled, the compiler will issue an error or a warning whenever it emulates access to a non-accessible member of an enclosing type. Such accesses can have performance implications.

Ignore

Assignment has no effect (e.g. 'x = x')

When enabled, the compiler will issue an error or a warning whenever an assignment has no effect (e.g. 'x = x').

Warning

Using a char array in string concatenation

When enabled, the compiler will issue an error or a warning whenever a char[] expression is used in String concatenations,

"hello" + new char[]{'w','o','r','l','d'}

Warning

Compliance and Class files

Option

Description

Default

Compiler compliance level

Specifies the JDK compiler compliance level. 

1.3

Use default compliance settings

If enabled, the default compliance settings for the compiler compliance level are applied. 

On

Generated class files compatibility

Specifies the generated class file compatibility. 

1.1

Source compatibility

Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword reserved for assertion support.

1.3

Report 'assert' as identifier

When enabled, the compiler will issue an error or a warning whenever 'assert' is used as an identifier (reserved keyword in JDK 1.4).

Ignore

Add variable attributes to generated class files

If enabled, variable attributes are added to the class file. This will enable local variable names to be displayed in the debugger (in places where variables are definitely assigned) The resulting .class file is then bigger.

On

Add line number attributes to generated class files

If enabled, line number information is added to the class file. This will enable source code highlighting in the debugger.

On

Add source file name to generated class file

If enabled, the source file name is added to the class file. This will enable the debugger to present the corresponding source code.

On

Preserve unused local variables

If enabled, unused local variables (i.e. never read) are not stripped from the class file. If stripped this potentially alters debugging.

On

Build Path

Option

Description

Default

Incomplete build path

Indicate the severity of the problem reported when an entry on the classpath does not exist, is not legitimate or is not visible (e.g. a reference project is closed).

Error

Circular dependencies

Indicate the severity of the problem reported when a project is involved in a cycle.

Error

Duplicated resources

Indicate the severity of the problem reported when more than one occurrence of a resource is to be copied into the output location.

Warning

Abort building on build path errors

Allow to toggle the builder to abort if the classpath is invalid.

On

Scrub output folders on full build

Indicate whether the Java Builder is allowed to clean the output folders when performing full build operations.

On

Enable using exclusion patterns in source folders

When disabled, no entry on a project classpath can be associated with an exclusion pattern.

On

Enable using multiple output locations for source folders

When disabled, no entry on a project classpath can be associated with a specific output location, preventing thus usage of multiple output locations.

On

Filtered resources

A comma separated list of file patterns which are not copied to the output folder. 

''

Related concepts
Java builder

Related tasks
Building a Java program
Working with build paths
Working with JREs

Related reference
Classpath Variables preferences
Java Build Path properties

Legal notices