Eclipse Project Release Notes

Release 3.7.1
Last revised Sep 23, 2011

This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative. 

1. Target Operating Environments
2. Compatibility with Previous Releases
3. Known Issues
4. Running Eclipse
5. Upgrading a Workspace from a Previous Release
6. Interoperability with Previous Releases
7. Defects Fixed in Maintenance Releases
Appendix 1: Execution Environment by Bundle

1. Target Operating Environments

In order to remain current, each Eclipse Project release targets reasonably current operating environments.

Most of the Eclipse SDK is "pure" Java code and has no direct dependence on the underlying operating system. The chief dependence is therefore on the Java Platform itself. Portions are targeted to specific classes of operating environments, requiring their source code to only reference facilities available in particular class libraries (e.g. J2ME Foundation 1.1, J2SE 1.4, Java 5, etc).

In general, the 3.7 release of the Eclipse Project is developed on a mix of Java SE 5 and Java SE 6 VMs. As such, the Eclipse SDK as a whole is targeted at all modern, desktop Java VMs. Most functionality is available for Java SE 5 level development everywhere, and extended development capabilities are made available on the VMs that support them.

Appendix 1 contains a table that indicates the class library level required for each bundle.

There are many different implementations of the Java Platform running atop a variety of operating systems. We focus our testing on a handful of popular combinations of operating system and Java Platform; these are our reference platforms. Eclipse undoubtedly runs fine in many operating environments beyond the reference platforms we test. However, since we do not systematically test them we cannot vouch for them. Problems encountered when running Eclipse on a non-reference platform that cannot be recreated on any reference platform will be given lower priority than problems with running Eclipse on a reference platform.

Eclipse 3.7 is tested and validated on the following reference platforms:

Operating System Version Hardware JRE Windowing System
Windows 7 x86 32-bit Oracle Java 6 Update 17
IBM Java 6 SR8
x86 64-bit
Vista x86 32-bit
x86 64-bit
XP x86 32-bit
x86 64-bit
Red Hat Enterprise Linux 6 x86 32-bit Oracle Java 6 Update 17
IBM Java 6 SR8
x86 64-bit
Power 64-bit IBM Java 6 SR8
SUSE Linux Enterprise Server 11 x86 32-bit Oracle Java 6 Update 17
IBM Java 6 SR8
x86 64-bit
Power 64-bit IBM Java 6 SR8
Ubuntu Long Term Support 10.04 x86 32-bit Oracle Java 6 Update 17
IBM Java 6 SR8
x86 64-bit
Oracle Solaris 10 x86 32-bit Oracle Java 6 Update 17 GTK
SPARC 32-bit
HP-UX 11i v2 ia64 32-bit HP-UX Java 6 Update 10 GTK
IBM AIX 5.3 Power 64-bit IBM Java 6 SR8 GTK
Apple Mac OS X 10.6 Universal 32-bit Apple Java 10.6 Update 2 Cocoa
Universal 64-bit

As stated above, we expect that Eclipse works fine on other current Java VM and OS versions but we cannot flag these as reference platforms without significant community support for testing them.

The Eclipse SDK is designed as the basis for internationalized products. The user interface elements provided by the Eclipse SDK components, including dialogs and error messages, are externalized. The English strings are provided as the default resource bundles.

Latin-1, DBCS, and BIDI locales are supported by the Eclipse SDK on all reference platforms.

The Eclipse SDK supports GB 18030 (level 1), the Chinese code page standard, on Windows, Linux and the Macintosh.

German and Japanese locales are tested.

2. Compatibility with Previous Releases

Compatibility of Release 3.7 with 3.6

Eclipse 3.7 is compatible with Eclipse 3.6 (and all earlier 3.x versions).

API Contract Compatibility: Eclipse SDK 3.7 is upwards contract-compatible with Eclipse SDK 3.6 except in those areas noted in the Eclipse 3.7 Plug-in Migration Guide . Programs that use affected APIs and extension points will need to be ported to Eclipse SDK 3.7 APIs. Downward contract compatibility is not supported. There is no guarantee that compliance with Eclipse SDK 3.7 APIs would ensure compliance with Eclipse SDK 3.6 APIs. Refer to Evolving Java-based APIs for a discussion of the kinds of API changes that maintain contract compatibility.

Binary (plug-in) Compatibility: Eclipse SDK 3.7 is upwards binary-compatible with Eclipse SDK 3.6 except in those areas noted in the Eclipse 3.7 Plug-in Migration Guide . Downward plug-in compatibility is not supported. Plug-ins for Eclipse SDK 3.7 will not be usable in Eclipse SDK 3.6. Refer to Evolving Java-based APIs for a discussion of the kinds of API changes that maintain binary compatibility.

Source Compatibility: Eclipse SDK 3.7 is upwards source-compatible with Eclipse SDK 3.6 except in the areas noted in the Eclipse 3.7 Plug-in Migration Guide . This means that source files written to use Eclipse SDK 3.6 APIs might successfully compile and run against Eclipse SDK 3.7 APIs, although this is not guaranteed. Downward source compatibility is not supported. If source files use new Eclipse SDK APIs, they will not be usable with an earlier version of the Eclipse SDK.

Workspace Compatibility: Eclipse SDK 3.7 is upwards workspace-compatible with earlier 3.x versions of the Eclipse SDK unless noted. This means that workspaces and projects created with Eclipse SDK 3.6 .. 3.0 can be successfully opened by Eclipse SDK 3.7 and upgraded to a 3.7 workspace. This includes both hidden metadata, which is localized to a particular workspace, as well as metadata files found within a workspace project (e.g., the .project file), which may propagate between workspaces via file copying or team repositories. Individual plug-ins developed for Eclipse SDK 3.7 should provide similar upwards compatibility for their hidden and visible workspace metadata created by earlier versions; 3.7 plug-in developers are responsible for ensuring that their plug-ins recognize metadata from earlier versions and process it appropriately. User interface session state may be discarded when a workspace is upgraded. Downward workspace compatibility is not supported. A workspace created (or opened) by a product based on Eclipse 3.7 will be unusable with a product based on an earlier version of Eclipse. Visible metadata files created (or overwritten) by Eclipse 3.7 will generally be unusable with earlier versions of Eclipse.

Non-compliant usage of API's: All non-API methods and classes, and certainly everything in a package with "internal" in its name or x-internal in the bundle manifest entry, are considered implementation details which may vary between operating environment and are subject to change without notice. Client plug-ins that directly depend on anything other than what is specified in the Eclipse SDK API are inherently unsupportable and receive no guarantees about compatibility within a single release much less with earlier releases. Refer to How to Use the Eclipse API for information about how to write compliant plug-ins.

3. Known Issues

3.1 General problems
     3.1.1 Startup
     3.1.2 GCJ
     3.1.3 64-bit Java HotSpot(TM) VM
3.2 Platform
     3.2.1 Core
     3.2.2 Ant
     3.2.3 User Assistance
     3.2.4 UI
     3.2.5 Text
     3.2.6 SWT
     3.2.7 Team and CVS
     3.2.8 Install/Update
     3.2.9 Debug
     3.2.10 Compare
3.3 Java development tools (JDT)
3.4 Plug-in Development Environment (PDE)

Note: Bug numbers refer to the Eclipse project bug database at

3.1 General problems

3.1.1 General - Startup

Installation/Configuration issues that can cause Eclipse to fail start

Here are some common problems that can cause Eclipse not to start:

Invalid characters in install directory prevents Eclipse from starting

Eclipse will fail to launch if installed in a directory whose path contains certain invalid characters, including :%#<>"!. The workaround is to install Eclipse in a directory whose path does not contain invalid characters. (bugs 3109 and 17281)

Hanging during class loading when out of permanent generation memory

The Sun VM may hang indefinitely during class loading if it runs out of permanent generation memory. This will cause CPU usage to stay at 100% until the process is ended. See the section Running Eclipse for details on addressing this VM problem.

3.1.2 General - GCJ

GCJ is an effort by the GCC team to provide an open source Java compiler and runtime environment to interpret Java bytecode. Unfortunately, the GCJ runtime environment is not an environment that is often tested on by Eclipse developers.

The most common problems surrounding GCJ are:

The workspace's log file is a good place to check to identify whether GCJ is being used or not. Every Eclipse log session is prepended with information about the runtime environment that was used to run Eclipse. The log may include something like the following:

java.fullversion=GNU libgcj 4.2.1 (Debian 4.2.1-5)

If Eclipse does start, one can check which runtime environment is being used to run Eclipse by going to Help > About Eclipse SDK > Installation Details > Configuration. The About dialog itself can also provide other information, the build identifier can be of particular interest as it is tagged by some distributions. This allows the user to identify whether Eclipse was downloaded through the distribution's package management system or directly from the web site.

Eg: Build id: M20070212-1330 (Ubuntu version: 3.2.2-0ubuntu3)

The two most common workarounds are:

To download Eclipse, try one of the links below:

It is imperative that 64-bit builds are downloaded and used if a 64-bit Java runtime environment has been installed. Below are two sample tarball names of version 3.7.0 of the Eclipse SDK packaged for 32-bit and 64-bit processors.
eclipse-SDK-3.7-linux-gtk.tar.gz (32-bit)
eclipse-SDK-3.7-linux-gtk-x86_64.tar.gz (64-bit)

To run Eclipse with an alternate Java runtime environment, the path to the Java virtual machine's binary must be identified. With an Eclipse installation from the distribution, altering the $PATH variable to include the path to the alternate Java runtime environment is often not enough as the Eclipse that Linux distributions package often performs a scan internally to pick up GCJ by itself whilst ignoring what's on the $PATH. An example of the terminal's output is shown below:

searching for compatible vm...
testing /usr/lib/jvm/java-7-icedtea...not found
testing /usr/lib/jvm/java-gcj...found

Once the path to the virtual machine's binary has been identified, try running Eclipse with the following command:

./eclipse -vm /path/to/jre/bin/java

For an actual example, it might look something like the following:

./eclipse -vm /usr/lib/jvm/sun-java-6/bin/java
./eclipse -vm /opt/sun-jdk-

If this seems to solve the problem, it is likely that the problem really was related to the use of GCJ as the Java runtime for running Eclipse. The eclipse.ini file located within Eclipse's folder can be altered to automatically pass this argument to Eclipse at startup. An example of its content is presented below:


Note that every argument must be on its own line. More information about the eclipse.ini file can be found at

If problems persists after downloading an installation of Eclipse from and using a supported Java runtime environment (a list of which may be found above), you can seek further assistance through the newsgroups, the IRC channel, and/or bugzilla.

3.1.3 General - 64-bit Java HotSpot(TM) VM

There is a known issue with the Java HotSpot(TM) 1.6.0 VM compiler which causes eclipse to crash (see Sun bug, and Eclipse bug 214092). The crash usually occurs within a VM CompilerThread when attempting to compile the method org.eclipse.core.internal.dtree.DataTreeNode.forwardDeltaWith.

This problem has been addressed in Sun Java 6 update 11, so the simplest resolution is to obtain the latest JRE release for your platform. To work around the issue you can exclude the method org.eclipse.core.internal.dtree.DataTreeNode.forwardDeltaWith from being compiled with the following VM argument:


This VM argument can be placed in the eclipse.ini file after the -vmargs line like the following:


There have been reports of other classes that cause the compiler to crash. If all else fails you can disable the compiler with the VM arg "-Xint".

3.2 Platform

3.2.1 Platform - Core

Installing plug-ins by unzipping them into the plugins directory

New plug-ins can be installed into the system by unzipping them into the plugins directory. However this is not recommended, and the dropins directory should be used for this purpose instead. Note that unzipping a different version of a plug-in that is already installed will have no effect. To change the version of a plug-in installed in your system, you need to either perform an update, or install a feature patch.

No branding with old config.ini

If you have an old config.ini file and use it with a new Eclipse build, you may not get the correct product branding. This is because the id of the standard Eclipse product changed. Users in shared install scenarios may end up in this situation as previous builds of Eclipse automatically generated config.ini files in some cases. The work around is either to delete the local config.ini or update the eclipse.product line to read eclipse.product=org.eclipse.platform.ide.

Problems with classloaders in created threads

There is a known issue with trying to load classes from a newly-created thread using a class loader different from the plug-in class loader. The result will be a ClassNotFoundException. As a workaround, do the following:

  1. Create a thread in which to run your code.
  2. Send yourThread.setContextClassLoader(yourClassLoader); // you can find your classloader by grabbing a class it loaded (YourPluginClass.class.getClassLoader())
  3. Run your code in the newly created thread.

If you set the context class loader for the current thread, you are competing with other users of the thread (all of Eclipse), so the results will be unpredictable. However, there should be no problem in practice provided you reset the context class loader back to its original value when your use in the current thread is complete. (bug 8907)

Deadlock creating executable extension in Plugin.startup

If Plugin.startup code is too complex and performs tasks such as creating an executable extension, a deadlock situation can be created. Only simple bookkeeping tasks should be performed in Plugin.startup code. (bug 5875)

Potential Problems Converting Plug-in Manifests

If your plug-in ships with a plug-in manifest and not an OSGi bundle manifest, is shipped as a JAR file, and contains a nested JAR file then there may be problems in the automatic generation of the bundle manifest file. The packages defined in the nested JAR may not be exported correctly in the Export-packages bundle manifest header. To work around this you should ship your plug-in with a bundle manifest. (bug 97689)

Location for Debug Options File on Mac OS

If you are running in debug mode on Mac OS, the default location for the .options file is inside the application bundle in the directory (like the eclipse.ini). (bug 88782)

Issues with JNI that use FindClass

There may be issues when using a JNI implementation that uses FindClass in a function where the JNIEnv pointer is not available, such as in a C callback (bug 125250). The reason is that FindClass, in this case, uses the application class loader to find the class. If the desired class is in the classpath used for the application classloader (e.g. defined by the VM argument -cp <classpath>), as it would typically be in a stand-alone application, there is no problem. However, under Eclipse, the application classloader does not have access to classes contained in plug-ins. Eclipse uses its own class loader to find classes contained in plug-ins.

The proper plug-in class loader is used by FindClass in JNI functions which are passed the JNIEnv pointer, but not when you have to use AttachCurrentThread to get the JNIEnv pointer. In this case the application classloader is used.

For example, the following will fail because AttachCurrentThread is used to get the JNIEnv pointer:

static JavaVM* jvm;  // Global variable

void myCallback(void) {
    JNIEnv* env;
    jvm->AttachCurrentThread((void**)&env, NULL);
    // Fails if some/class is not in the application classloader:
    jclass cls = env->FindClass("some/class");
    jmethodID methodID = env->GetMethodID(cls, "methodName",
      "(Ljava/lang/String;)V or whatever signature");
    env->CallVoidMethod(callback, methodID, ...);

A solution is to cache the method ID, for example:

static jmethodID mid;  // Global variable

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
  // Store the JavaVM pointer
    jvm = vm;

  // Find the class and store the method ID
  // Will use the class loader that loaded the JNI library
    jclass cls = env->FindClass(className"some/class");
    if(!cls) goto ERR;

    mid = env->GetMethodID(cls, "methodName",
      "(Ljava/lang/String;)V or whatever signature");
    if(!mid) goto ERR;

void myCallback(void) {
    JNIEnv* env;
    jvm->AttachCurrentThread((void**)&env, NULL);
    env->CallVoidMethod(callback, mid, ...);
     // Handle error ...

3.2.2 Platform - Ant

Custom Ant tasks and Ant types must be separate from plug-in library JARs

Including the class files for custom Ant tasks or Ant types in the regular code JAR for your plug-in causes problems. These class files must be provided in a separate JAR that is contributed to the org.eclipse.ant.core.antTasks or antTypes extension point (and not declared as a library in the plug-in's manifest). This ensures that the Ant tasks and types are loaded by the special Ant class loader and not by a plug-in classloader. (bug 34466).

Concurrent Ant builds not supported

Eclipse can run Ant in the same JVM as the rest of Eclipse. Several aspects of Ant and its use of global Java resources (such as System.out and System.err), make it unsafe to run more than one Ant build concurrently in the same JVM. (bug 24129).

XDoclet support from within Eclipse

Since there are differences when running Ant from the commandline and within Eclipse, some extra steps may be needed to have XDoclet support function correctly within Eclipse. Problems may occur creating XDoclet subtasks. The workarounds and full discussion can be found in bug report. (bug 37070)

Ant Editor code completion based on Ant 1.6.x

Code completion provided by the Ant editor does not respect the user-specified version of org.eclipse.ant.core plug-in or ANT_HOME. Code completion proposals are mostly based on Ant 1.6.x with some updates to Ant 1.6.5 (bug bug 193046)

Setting build loggers not supported when debugging Ant builds

When debugging Ant builds within Eclipse, setting -logger as a program argument will be ignored.

Renaming an External Tool builder set to run during auto-build will cause errors

If you rename an existing external tool builder that is configured to run during auto-builds, you will get the following error: Errors during build. Errors running builder "Integrated External Tool Builder" on project <PROJECT_NAME>. The builder launch configuration could not be found. The workaround is to first disable the builder for auto-builds and then rename the builder. (bug 118294)

Slow typing/saving of the Ant editor with imports that define numerous macrodefs

The Ant editor is slow on saving with buildfiles that have <import> declarations of buildfiles that have numerous <macrodef>s. See bug 125117 for a possible workaround

Failure to run Ant builds on non-Windows platforms if Eclipse installed in location with spaces in the path

Due to a bug in Ant 1.7.0, Ant builds will fail with an IllegalArgumentException if the Eclipse installation is in a location with spaces in the path. Embedded usage of Ant builds, such as plug-in export will also fail. See bug 187993 for possible workarounds

Ant 1.8.x reports missing libraries as build failures

In Ant 1.8.x, if you try to use a task that requires additional libraries and you do not have the libraries on the Ant classpath, the build will now properly report is failed. In previous versions of Ant, the build would still report that it had suceeded even though it actually failed to run any of the tasks from additional bundles. See bug 344518.

For more information on tasks that require additional bundles please refer to the Ant 1.8.2 release notes and the Optional Tasks section in the At manual.

Ant 1.8.x extension-point feature is not supported in the Ant editor

The extension-point feature added in Ant 1.8.x is not supported in the Ant editor, meaning there is no content assist or help support for it. See bug 324625 for more details.

3.2.3 Platform - User Assistance

Welcome page not displayed properly (Linux/Unix)

The default Welcome implementation is HTML-based and requires a supported browser in order to work. If no supported browser can be found, Welcome falls back to its Forms-based implementation, which has a different (simpler) appearance. Consult the SWT FAQ for supported browsers and setting up your browser to work with eclipse.

Help browser tool bar buttons do not work for some documents

The Help browser's Print, Synchronize, and Bookmark buttons do not work for pages that are not actually installed with the product. However, you can always use the print command in the browser's context menu to print the page you're reading. (bug 44216)

Help documents not displayed in a browser or very slow document loading (Windows only)

If your LAN settings are not properly configured for local host access, your Help browser might open to a blank page or display an HTTP error instead of a help page, or you may experience long delays when loading help documents. Your system administrator can configure your LAN settings so that help documents can be accessed from the local help server.
  1. In the Control Panel, open Internet Options, select the Connections tab and choose LAN Settings.
  2. If your host was configured to use DHCP for IP assignment, make sure that the "Automatically detect settings" check box is cleared.
  3. If you use a proxy server, ensure that the "Bypass proxy server for local addresses" is selected.
  4. In "Advanced" settings for proxies, add ";localhost" to the "Exceptions" if these addresses are not listed.
  5. If you are using an automatic configuration script for proxy settings, and are not sure that the script is correct, clear the "Use automatic configuration script" check box.

Working disconnected from the network (Windows only)

If you are experiencing problems when not connected to the network, you must install the loopback adapter from the Windows installation CD. (bug 831)

Using Internet Explorer in offline mode (Windows only)

If you have been using Internet Explorer in Offline mode, when you access the help system you will get a message indicating that the web page you requested is not available offline or a blank page will display. Click Connect or deselect "Work Offline" in the Internet Explorer "File" menu to return the system behavior to normal.

Help topics not highlighted in High Contrast mode (Windows only)

Windows High Contrast settings are not consistently picked up by Internet Explorer when they are set from the Accessibility Options utility as opposed to when they are set using the predefined schemes. On Windows XP, it is recommended to set High Contrast as follows: Right click the desktop, chose properties, select Windows Classic style from the Windows and buttons drop down on the Appearance tab, and choose your scheme (for example High Contrast Black) from Color Scheme drop down. (bug 28609)

3.2.4 Platform - UI

High contrast settings

Eclipse was tested for High Contrast using 1152 x 864 resolution in Windows XP High Contrast mode. You can select this mode by selecting Accessibility Options > Display > Use High Contrast from the Windows XP Control Panel menu.

Dirty state not tracked properly for OLE documents (Windows only)

The dirty state for an OLE document is not updated properly. This causes Eclipse to prompt to save the contents of the editor when the document is closed, even if the contents have already been saved. (bug 2564)

OLE document crashes can cause Eclipse to also crash (Windows only)

If an OLE document crashes, Eclipse can crash, or the workbench menus can become inconsistent.

2.1 Presentation based workspaces incorrectly get new Min/Max behavior

Workspaces that are currently using the Eclipse 2.1 Presentation will incorrectly 'inherit' the new min/max behavior when opened with 3.3.


  1. Go to the 'Preferences -> Appearance' page, change the current presentation to 'Default' and select apply
  2. Change it back to the 2.1 Presentation, select 'OK' and 'Yes' to the restart prompt
When the workbench re-opens the old min/max behavior will be restored.

Toolbars only containing contributed controls exhibit display errors on Mac/Linux

Currently there is no way on the Max or Linux platforms to define the height for controls contributed to toolbars, nor will those platforms respect the size returned by the control's computeSize method. If you encounter this issue there is currently no truly viable workaround. (bug 183003)

3.2.5 Platform - Text


3.2.6 Platform - SWT

Eclipse plug-in based on the SWT Browser throws exception

The SWT Browser widget uses a platform-specific web browser to render HTML. The org.eclipse.swt.SWTError exception ("No more handles") is thrown on platforms that don't meet the requirements for running the Browser widget. Supported platforms and prerequisites are listed on the SWT FAQ item "Which platforms support the SWT Browser?".

Opening File Dialog crashes eclipse (Vista only)

On Vista, launching eclipse using -vmargs -Xmx[any size] can crash eclipse when the FileDialog is opened. The workaround is to use the default heap size, i.e. do not use the -Xmx VM args. (bug 188317)

Crash while editing text (Windows XP with SP2 only)

Some users who have installed Service Pack 2 on Windows XP have experienced crashes while using editors in Eclipse. The workaround is to place a working version of Windows\System32\USP10.DLL in the Eclipse startup directory or uninstall Service Pack 2. (bug 56390)

Eclipse hangs when pasting from an unresponsive application (GTK only)

If the application that is supplying the clipboard material is unresponsive, the paste operation hangs Eclipse for several minutes. This situation can be encountered when copying from an Eclipse target workbench, suspending the target workbench at a breakpoint and pasting into the hosting Eclipse workbench. (bug 44915)

Available colors on 8-bit Linux (Linux only)

Typically, in Gnome Linux installs running with 8-bit visuals (i.e. 256 color mode), before the Eclipse application is started there are no free colors. This may mean that Eclipse is unable to allocate the default widget background color, causing it to display a white background. The functionality, however, is otherwise unaffected.

IME conversion problem (Solaris GTK only)

When typing Japanese text, the conversion to Kanji must be done one ideogram at a time. (bug 226636)

Key bindings can stop working on Debian (GTK+ only)

On some versions of Debian, Eclipse key bindings may stop working. In this context the only way to make the key bindings work again is to restart Eclipse.

The problem is that a focus issue exists in GTK+ 2.6.7 and earlier, for which SWT has a workaround. This workaround is incompatible with the GTK+ 2.6.7 fix, so a GTK+ version check is done at runtime to determine whether the workaround should be used or not. However, Debian backported the GTK+ focus fix into their libgtk+2.0 (2.6.4-2) package, so the SWT workaround and GTK+ fix are both incorrectly applied in this context.

To work around this problem, either get the Debian unstable version of GTK+, compile your own GTK+, or hack SWT's Shell.gtk_realize(int) and change the version that it checks. See SWT bug 107013 and GTK+ bug 109246 for more information.

Typing in an editor crashes with IBM 1.5 VM (Linux GTK PPC only)

When running on the IBM Java 5.0 VM, Eclipse crashes while the user is typing in an editor. If using this VM you must disable the JIT with the -Xnojit vm argument to avoid the crashes (see bug 116730). The command line for launching Eclipse with this vm should be:
eclipse -vmargs -Dosgi.locking=none -Xnojit

Eclipse won't start (Linux GTK PPC only)

Eclipse fails to create a lock file with reason "No locks available". To launch eclipse you must disable file locking using the osgi.locking property. For example, you could launch eclipse as follows:
eclipse -vmargs -Dosgi.locking=none

SWT for Carbon cannot be used with Mac OS X JRE version 1.6 (Mac OS X 10.5 only)

On Leopard (Mac OS X 10.5), JDK version 1.6 assumes that pointers have a size of 64 bits, but SWT's Carbon port only uses 32-bit pointers, so SWT and Eclipse cannot be used on Leopard with JDK version 1.6. The workaround is to use the Cocoa version of SWT or an earlier supported version of the Mac OS X JDK.

Snow Leopard (Mac OS X 10.6) has both a 32-bit and 64-bit version of JDK 1.6, so this restriction does not apply on that version of the operating system.

Strings may be truncated or incorrectly wrapped on RHEL5 (Linux GTK only)

Strings on wrapping Controls may not appear correctly in some locales on RHEL5 as a result of a bug in Pango version 1.14.x. This problem can be fixed by upgrading the installed Pango library to a version that is newer than 1.14.x. (bug 231951)

Block Selection functionality provided by StyledText is not BIDI aware

When the orientation of characters under the left and right edges of the block selection rectangle are not the same, the actual selection ranges (in memory) differ from the visual representation of the selection. (bug 277929)

Older versions of some Windows screen readers no longer work with Eclipse

JAWS versions 8 and 9 and Window-Eyes version 6 no longer work well with Eclipse and other SWT applications. Window-Eyes 6 will cause Eclipse to crash, and JAWS 8 and 9 can cause SWT applications to crash. This happens because IAccessible2 support was added to SWT for Eclipse 3.7, but these older screen reader versions contain partial implementations of IAccessible2 that do not follow the current IAccessible2 specification.

The workaround for these cases is to specify Java property org.eclipse.swt.accessibility.UseIA2 with value false, which will instruct SWT to not attempt to use IA2 interfaces. An easy way to set this property is to specify VM argument -Dorg.eclipse.swt.accessibility.UseIA2=false when launching Eclipse or your SWT application. (bug 313182)

Drawing problems when using non-advanced graphics on recent GTK versions

On modern Linux distributions with a GTK version greater than 2.18, clipping problems and pixel corruption can occur if the SWT client uses non-advanced GC calls. These problems seem to be caused by low-level bugs in the interactions between GDK and X.

The workaround for this problem is to specify Java property org.eclipse.swt.internal.gtk.useCairo with value true, which instructs SWT to always use Cairo for all GC calls (advanced graphics). An easy way to set this property is to specify VM argument -Dorg.eclipse.swt.internal.gtk.useCairo=true when launching Eclipse or your SWT application. (bugs 345650 and 333965)

3.2.7 Platform - Team - CVS

The following are known problems with the CVS repository provider only, and do not apply to other repository providers. Additional information on how to use CVS from Eclipse can be found in the Eclipse CVS FAQ.

CVS server compatibility

The CVS plug-in parses messages returned from the CVS server. If the format of these messages is not as expected, some of the plug-in's functionality may be missing. The CVS plug-in is compatible with all stable 1.11.X builds of the CVS server, and should be compatible with future releases in that stream unless text message formats change (the last tested server was 1.11.22). As for the 1.12.X feature releases of CVS, the Eclipse CVS client has been tested with builds up to 1.12.13. However, future releases could easily break the Eclipse CVS client. Basic functionality, such as Checkout, Commit, and Update, should always work, but there may be problems with more advanced commands such as Synchronizing and Browsing the repository.

SSH2 proxy settings lost upgrading to 3.3

CVS now uses the Platform proxy settings. As a result, any CVS proxy settings will be lost and must be re-entered on the General>Network Connections preference page.

Connection cannot be found after initially missing

If a connection initially fails due to a network problem, the connection may continue to fail even when the network problem is fixed. In order to establish the connection you must exit and restart Eclipse. (bug 9295)

"Received broken pipe signal" error from server

Eclipse sometimes performs multiple commands within a single connection to the server. This may cause problems with CVS servers that are running server scripts in response to certain commands. (bugs 23575 and 23581)

"Terminated with fatal signal 10" error from server

There is a bug in the CVS server related to some compression levels. If you get this error, changing the compression level on the CVS preference page may help. (bug 15724)

"Unknown response" error using ext connection method

There are a few situations that can result in an "Unknown response" error messages when using the ext connection method. One situation involves using an external communications client (e.g. rsh or ssh) that adds CRs to the communications channel (bug 21180). Another involves Eclipse not properly reading the stderr output of the external communications tool. (bug 11633)

A disabled CVS capability may not be auto-enabled in existing workspaces

New in 3.0 is the ability to disable capabilities and the CVS support in Eclipse can be disabled. However, for backwards compatibility the CVS capability is auto-enabled in existing workspaces that already contain CVS projects. The auto-enabling function may not run if the team support plugin is not loaded at startup. (bug 66977)

Builder output files may appear as changed

When folders containing build output are shared they may get improperly marked as dirty when build output is generated.

Enabling GNOME proxy support

GNOME applications can make use of proxy settings defined in this environment. If set, Eclipse will use it prior to proxy settings declared using env variables. This feature is disabled by default, to enable it launch Eclipse with "" switch. That is,


3.2.8 Platform - Install/Update

Manually installing features and plug-ins on a FAT file system (Windows only)

When features and plug-ins are manually installed on top of an Eclipse-based product install located on a FAT file system that has already been run at least once, the product must be explicitly restarted with -clean. That is,

eclipse.exe -clean

Connecting to untrusted sites using https

You cannot install or update software from a site using https whose certificate is not chained to a trusted root certificate in your local certificate store. This typically means the server is using a self-signed certificate, or a certificate authenticated by an unknown third party.

Extension location is lost if the install path changes

A previously configured extension location may be temporarily removed if the install is moved or mounted under a different path. This only happens when the link file that configures the extension location uses a relative path that points to a directory under the Eclipse install. On a second startup using the same install path, the extension location is added again (bug 95403).

Feature patches can only be installed from Eclipse 3.4-based update sites

Feature patches can only be installed from update sites designed for Eclipse 3.4 or greater. Specifically, the update site must have the necessary metadata for Equinox p2 (a content.xml or content.jar file). This data can be generated by building an update site using Eclipse 3.4 or newer, or running the p2 metadata generator on an update site built using earlier versions of the Eclipse SDK. See the help topic Generating p2 metadata for more details on running the p2 metadata generator (bug 244483).

3.2.9 Platform - Debug

None. (Known problems with the Java debugger appear below in the JDT section.)

3.2.10 Platform - Compare


3.3 Java development tools (JDT)

Multiple regions formatting in a given source snippet

In version 3.4, the new API method org.eclipse.jdt.core.formatter.CodeFormatter.format(int, String, IRegion[], int, String) has been added to allow the formatting of several regions in a source snippet with a single pass.
Even if specified, this method does not currently accept comments of the following kinds: This will be fixed in a future release (bug 233967).

Searching for constant field references

Search does not find references to constant fields inside binaries because the Java Language Specification mandates that constant field values be inlined in the class file's byte codes, leaving no trace of a field reference. (bug 12044)

Cut, copy, paste not working for linked resources in views showing Java elements

The cut, copy, and paste actions do not work for linked files and folders appearing in views that show Java elements, including the Package Explorer. The workaround is to use these actions from the Navigator view instead. (bug 34568)

Java working sets not working correctly for elements from JRE system library container

Applying a working set consisting entirely of elements from the JRE System library container as a filter to the packages view might result in an empty Package Explorer. (bug 30442)

Breakpoints unreliable running Sun 1.6.0_14

Developers debugging applications on Sun's 1.6.0_14 virtual machine should be aware that breakpoints are unreliable (i.e. do not always suspend execution). The problem occurs on Windows and Linux platforms. This is an issue with the VM and not with Eclipse. The workaround is to use the -XX:+UseParallelGC VM option. (bug 279137).

Some refactoring script operations fail with Sun 6.0 JREs

Creating and applying refactoring scripts sometimes fails with Sun 6.0 JREs due to a bug in the XML parser that is shipped with those VMs. A workaround is to use a J2SE 5.0 VM or an IBM 6.0 VM. Another workaround is to replace the XML parser using the Java Endorsed Standards Override Mechanism:

  1. Get original versions of xml-apis.jar, xercesImpl.jar, xalan.jar, and serializer.jar from Apache, e.g. from here.
  2. Unpack the archive and copy the 4 JARs into <path-to-your-JavaSE6.0-install>\jre\lib\endorsed\.
(see Sun bug, Eclipse bug 262820)

Suspend on uncaught exception overrides exception breakpoint location filters

Exception breakpoints can be configured with location filters (inclusive and exclusive). When an unchecked exception is configured to not suspend execution in a specific class, execution will still suspend when the user preference to suspend on uncaught exceptions is on. (bug 66770)

Running Java programs with non-Latin-1 characters in package or class names

You get a java.lang.NoClassDefFoundError when running Java programs with non-Latin characters in the package or class names. The workaround is to package the class files as a JAR file and run the program out of the JAR and not from the file system directly. (bug 4181)

Cannot run or debug class in a project with GB18030 characters in project name

Most class libraries do not properly support the creation of a system process (via java.lang.Runtime.exec(...)) when the specified command line contains GB18030 characters. This limitation means the debugger cannot launch applications when the command line it generates contains GB18030 characters. (bug 32206)

Cannot detect installed JRE with GB18030 characters in path name

Automatic JRE detection fails when the JRE is stored in a directory containing GB18030 characters in its name. (bug 33844)

Cannot generate Javadoc for packages with GB18030 characters in the name

Most class libraries do not properly support the creation of a system process (via java.lang.Runtime.exec(...)) when the specified command line contains GB18030 characters. Since Javadoc is created using the Javadoc executable provided with the JDK, generating Javadoc fails if the package or class name contains GB18030 characters. (bug 32215)

Unable to debug stack overflows

If a debug session suspends on a java.lang.StackOverflowError exception (due to an exception breakpoint), the debugger may not be able to retrieve any debug information from the target JVM. As well, the debugger may not be able to reliably interact with the target JVM past this point. (bug 19217)

Evaluation limitation

The debugger uses threads in the target JVM to perform evaluations (both explicit evaluations that the user requests, and implicit evaluations such as toString() invocations in the Variables view). The Java Debug Interface (JDI) requires that the thread in which an evaluation is performed be suspended by a user event (that is, a breakpoint or step request). Evaluations cannot be performed on threads suspended by the suspend action. As well, when a breakpoint is configured to suspend the JVM rather than just the individual thread, the threads which did not encounter the breakpoint are not in a valid state to perform an evaluation. When an evaluation is attempted in a thread that is not in a valid state to perform an evaluation, an error message will appear to the effect of "Thread must be suspended by step or breakpoint to perform method invocation". (bug 34440)

Missing debug attributes

The debugger requires that class files be compiled with debug attributes if it is to be able to display line numbers and local variables. Quite often, class libraries (for example, "rt.jar") are compiled without complete debug attributes, and thus local variables and method arguments for those classes are not visible in the debugger.

Using Hot Code Replace

Hot code replace is supported on JDK 1.4.x VMs, and IBM J9 VMs. The debugger will attempt to replace all class files that change in the workspace as the user edits and builds source code. However, hot code replace is limited to changes that a particular virtual machine implementation supports. For example, changes within existing methods may be supported, but the addition or removal of members may not be.

Note that hot code replace and stepping on JDK 1.4.0 VMs was unreliable. The underlying VM problems were fixed in JDK 1.4.1, and later.


Setting a breakpoint inside a scrapbook page is not supported.

When a snippet is run in the scrapbook which directly or indirectly calls System.exit(int), the evaluation cannot be completed, and will result in a stack trace for a com.sun.jdi.VMDisconnectedException being displayed in the scrapbook editor.

Terminating a scrapbook page while it is performing an evaluation results in a com.sun.jdi.VMDisconnectedException being displayed in the scrapbook editor.

Debugging over slow connections

A global Java debug preference specifies the debugger timeout, which is the maximum amount of time the debugger waits for a response from the target VM after making a request of that VM. Slow connections may require that this value be increased. The timeout value can be edited from the Java > Debug preference page. Changing the timeout value only affects subsequently launched VM, not VMs that are already running.

Updating of inspected values

When inspecting the result of an evaluated expression in the debugger, it is important to note that the result displayed is the result of that expression at the time it was evaluated. For example, when inspecting a simple integer counter (primitive data type), the value displayed in the Expressions view is the value when the expression was evaluated. As the counter is changed in the running program, the inspected result will not change (since the view is not displaying the value bound to a variable - it is displaying the value of an expression, and the value of a primitive data type cannot change). However, if an expression results in an object, fields of that object will be updated in the inspector as they change in the running program (since the value bound to fields in an object can change).

Stepping over native methods that perform I/O

When the debugger steps over native methods that perform I/O to System.out or System.err, the output may not appear immediately unless the native performs a flush on the output buffer.

VM and process termination running on IBM 1.3 JVM on Linux (Linux only)

Terminating a launch, debug target, or system process associated with a debug target running on the IBM 1.3 JVM on the Linux platform does not work when the associated debug target has a suspended thread. To remove such debug targets from the debug UI, select Terminate and Remove from the debug view's pop-up menu (or use the shortcut "delete" key). Associated system processes in the OS may not be properly cleaned up. If a debug target has no suspended threads, termination works properly. (bug 1631)

Java 6 and MacOS

Apple JavaSE-1.6 VMs only execute on 64-bit architectures but JDT will detect 1.6 VMs installed on 32-bit architectures when a new workspace is started or when the user presses the "Search..." button on the Installed JREs preference page. Error messages will appear in the log each time JDT attempts to determine which execution environments a 1.6 VM is compatible with. JDT can be configured to ignore 1.6 JREs by removing them from the Installed JREs preference page. (bug 262542)

Java Annotation Processing

Some methods in the processing API are unimplemented when compiling within the IDE, and will throw UnsupportedOperationException.

Java 6 annotation processors are supported in the batch compiler and in the IDE. By design, Java 6 processors are only executed during a build, not while editing. (bug 188558)

Java 5 annotation processors are supported in the IDE only. Java 5 processors can be executed while editing, as well as during a build. Slow annotation processors can cause a slowdown of the editing experience. If this occurs, you may wish to turn off Enable processing in editor on the Java Compiler > Annotation Processing properties page of your Java project.

Java indexing encounters problems when a folder is used both as a source and a class folder

Java indexing encounters problems when a folder is used both as a source folder in a project and as a class folder in another project. Hence, when this peculiar setup is used, the Java Search might miss matches located in such a folder. To avoid this kind of problem, it is strongly advised to use different folders for sources and binary classes. (bug 309903)

3.4 Plug-in Development Environment (PDE)

Feature manifest editor does not preserve all comments

When a non-source page of the feature manifest editor is used, PDE will convert changes back into XML by regenerating the file. Although the overall content and most of the comments are preserved, some comments may be lost. (bug 59502)

PDE will not unzip source zips of some plug-ins

In the plug-in import wizard, when you choose to import plug-ins as "projects with source folders", PDE will not unzip the source for the org.apache.ant, org.eclipse.core.runtime.compatibility.registry, org.eclipse.osgi.util and This is because the source ZIPs contains code that will not compile when unzipped as it requires additional JARs that are not part of the SDK. To avoid the creation of plug-in projects that won't compile, PDE will import these plug-ins as binary and attach source, so you would still be able to read the source, you just won't be able to modify it. Also, PDE will not unzip the source for the org.eclipse.swt plug-ins. In this case, it is because, when shipped, the swt code is spread across a plug-in and a fragment, and when unzipped, it will require circular dependencies between the plug-in and fragment projects. These circular dependencies are at minimum marked as warnings by the JDT compiler and may result in unpredictable build behavior. Therefore, PDE always imports org.eclipse.swt as binary with source attached. (bug 66314)

Emacs key bindings do not work in manifest editor fields

Non-default key bindings currently do not work in fields on non-source pages of the PDE manifest editors. (bug 19482)

Export of plug-in may silently drop classes

When exporting a plug-in using the plug-in, feature or product wizards, some classes might be dropped from the resulting archive if their fully qualified name is too long. This typical path limitation can be worked around by creating the jar of the problematic plug-in by using the Jar export wizard. (bug 97150)

Compilation errors when exporting projects not stored outside of the workspace

When exporting multiple plug-ins and one is stored outside of the workspace, compile errors occurs on export. To work around the problem, you can either export the plug-ins one by one, or change their location. (bug 98579)

Headless build needs to be run from a fully qualified path

When running a headless build using the scripts provided by pde build, the properties builder and buildDirectory must refer to a fully qualified path. (bug 139554)

Target Platform only sees installed plug-ins

With the new p2 provisioning system in 3.4, PDE introduced a preference to control how target platforms are built. By default, this preference is on if your target equals your host, otherwise it's off. When this preference is enabled, PDE attempts to read a target platform's configuration and build the target platform based in the target's list of installed plug-ins. If a configuration can't be found (a or platform.xml file), PDE will simply manually scan the target directory and populate the target platform's list of plug-ins. (bug 226037 and bug 225148)

Delta pack is not seen by PDE when installed

If you're using the delta pack, the target platform preference for building a target based on the target's installed plug-ins must be checked off. This is because a target's runtime configuration only contains plug-ins specific to the platform it's running on. (bug 230146)

4. Running Eclipse

After installing the Eclipse SDK in a directory, you can start the Workbench by running the Eclipse executable included with the release (you also need a Java SE 5 JRE, not included with the Eclipse SDK). On Windows, the executable file is called eclipse.exe, and is located in the eclipse sub-directory of the install. If installed at c:\eclipse-SDK-3.7-win32, the executable is c:\eclipse-SDK-3.7-win32\eclipse\eclipse.exe. Note: Set-up on most other operating environments is analogous. Special instructions for Mac OS X are listed below.

Allocating enough memory and solving OutOfMemoryErrors

By default, Eclipse will allocate up to 256 megabytes of Java heap memory. This should be ample for all typical development tasks. However, depending on the JRE that you are running, the number of additional plug-ins you are using, and the number of files you will be working with, you could conceivably have to increase this amount. Eclipse allows you to pass arguments directly to the Java VM using the -vmargs command line argument, which must follow all other Eclipse specific arguments. Thus, to increase the available heap memory, you would typically use:

eclipse -vmargs -Xmx<memory size>

with the <memory size> value set to greater than "256M" (256 megabytes -- the default).

When using a Sun VM, you may also need to increase the size of the permanent generation memory. The default maximum is 64 megabytes, but more may be needed depending on your plug-in configuration and use. When the VM runs out of permanent generation memory, it may crash or hang during class loading. This failure is less common when using Sun JRE version 1.5.0_07 or greater. The maximum permanent generation size is increased using the -XX:MaxPermSize=<memory size> argument:

eclipse -vmargs -XX:MaxPermSize=<memory size>

This argument may not be available for all VM versions and platforms; consult your VM documentation for more details.

Note that setting memory sizes to be larger than the amount of available physical memory on your machine will cause Java to "thrash" as it copies objects back and forth to virtual memory, which will severely degrade your performance.

Selecting a workspace

When the Workbench is launched, the first thing you see is a dialog that allows you to select where the workspace will be located. The workspace is the directory where your work will be stored. If you do not specify otherwise, Eclipse creates the workspace in your user directory. This workspace directory is used as the default content area for your projects as well as for holding any required metadata. For shared or multi-workspace installs you must explicitly specify the location for your workspace using the dialog (or via the "-data" command line argument).

Specifying the Java virtual machine

Here is a typical Eclipse command line: 

eclipse -vm c:\jdk6u22\jre\bin\javaw

Tip: It's generally a good idea to explicitly specify which Java VM to use when running Eclipse. This is achieved with the "-vm" command line argument as illustrated above. If you don't use "-vm", Eclipse will look on the O/S path. When you install other Java-based products, they may change your path and could result in a different Java VM being used when you next launch Eclipse.

To create a Windows shortcut to an installed Eclipse:

  1. Navigate to eclipse.exe in Windows Explorer and use Create Shortcut on the content menu.
  2. Select the shortcut and edit its Properties. In the Target: field append the command line arguments.

Opening this shortcut launches Eclipse. (You can drag the shortcut to the Windows Desktop if you want to keep it in easy reach.)

Mac OS X

On Mac OS X, you start Eclipse by double clicking the Eclipse application. If you need to pass arguments to Eclipse, you'll have to edit the eclipse.ini file inside the Eclipse application bundle: select the Eclipse application bundle icon while holding down the Control Key. This will present you with a popup menu. Select "Show Package Contents" in the popup menu. Locate eclipse.ini file in the Contents/MacOS sub-folder and open it with your favorite text editor to edit the command line options.

On MacOS X you can only launch a UI program more than once if you have separate copies of the program on disk. The reason for this behavior is that every UI application on Mac can open multiple documents, so typically there is no need to open a program twice. Since Eclipse cannot open more than one workspace, this means you have to make a copy of the Eclipse install if you want to open more then one workspace at the same time (bug 139319).

If you need to launch Eclipse from the command line, you can use the symbolic link "eclipse" in the top-level eclipse folder. It refers to the eclipse executable inside the application bundle and takes the same arguments as "eclipse.exe" on other platforms.

On Mac OS X 10.4 and later, you may notice a slow down when working with significant numbers of resources if you allow Spotlight to index your workspace. To prevent this, start System Preferences, select the Spotlight icon, then the Privacy tab, then click the Add button ("+") and find your workspace directory in the dialog that appears.

Shared Install

The startup speed of a shared install can be improved if proper cache information is stored in the shared install area. To achieve this, after unzipping Eclipse distribution, run Eclipse once with the "-initialize" option from an account that has a write access to the install directory.

5. Upgrading Workspace from a Previous Release

Users who don't use "-data"

If you weren't previously using "-data" to specify your workspace, follow these steps to upgrade:

  1. Find the workspace directory used by your old version of Eclipse. Typically this is located inside the directory in which Eclipse was installed in a sub-directory called "workspace". If you are using a shortcut or script to launch Eclipse, then it will be under the current working directory of that shortcut or script in a sub-directory called "workspace". For Windows users, this is specified by the "Start in:" argument in your shortcut properties.
  2. Copy this workspace directory to a new, empty location outside of any Eclipse install directory.
  3. Install the new version of Eclipse in a new location, separate from any old version of Eclipse.
  4. If you had installed additional features and plug-ins into your old Eclipse, you should re-install them in the new Eclipse.
  5. Start this new version of Eclipse and select this location using the workspace chooser dialog at startup (or use "-data" command line argument to pre-select the workspace location).

Users who do use "-data"

If you were previously using the "-data" argument to start Eclipse, your upgrade path is much easier:

  1. Optionally copy your workspace directory to a new, empty location outside of any Eclipse install directory as a backup.
  2. Install the new version of Eclipse in a new location, separate from any old versions of Eclipse.
  3. If you had installed additional features and plug-ins into your old Eclipse, you should re-install them in the new Eclipse.
  4. Start this new version of Eclipse and select this location using the workspace chooser dialog at startup (or use "-data" command line argument to pre-select the workspace location).

Note: Copying your workspace is recommended because, after you've upgraded your workspace, you won't be able to use it again with an older version of Eclipse. If you ever want to go "back in time" to an earlier release, you will need that backup.

Users who use User Libraries or classpath containers that contain JARs referencing other libraries via Class-Path in the MANIFEST.MF

If you want the referenced JAR files to be included in the classpath, you can do one of the following:

6. Interoperability with Previous Releases

6.1 Interoperability of Release 3.7 with previous releases

Sharing projects between heterogeneous Eclipse 3.7 and 3.6

Special care is required when a project in a team repository is being loaded and operated on by developers using Eclipse-based products based on different feature or plug-in versions. The general problem is that the existence, contents, and interpretation of metadata files in the workspaces may be specific to a particular feature or plug-in version, and differ between versions. The workspace compatibility guarantees only cover cases where all developers upgrade their Eclipse workspaces in lock step. In those cases there should be no problem with shared metadata. However, when some developers are working in Eclipse 3.7 while others are working in Eclipse 3.6, there are no such guarantees. This section provides advice for what to do and not to do. It addresses the specific issues with the Eclipse SDK.

The typical failure mode is noticed by the 3.7 user. 3.7 metadata is lost when a 3.6 user saves changes and then commits the updated metadata files to the repository. Here's how things typically go awry:

Here are some things to watch out for when sharing projects between Eclipse 3.7 and earlier 3.x releases:

Using Eclipse 3.7 to develop plug-ins that work in Eclipse 3.6

It is also possible (and reasonable) to use Eclipse 3.7 to develop a plug-in intended to work in Eclipse 3.6 or earlier. Use the Plug-in Development > Target Platform preference page to locate non-workspace plug-ins in an Eclipse 3.6 install. This ensures that the code for your plug-in is being compiled and tested against Eclipse 3.6 APIs, extension points, and plug-ins. (The above list of concerns do not apply since they affect the layout and interpretation of files in the plug-in project but none affect the actual deployed form of the plug-in.)

7. Defects Fixed in Maintenance Releases

7.1 Defects fixed in release 3.7.1 since 3.7

Release 3.7.1 is a maintenance release to fix serious defects present in release 3.7. These changes only affect some plug-ins and features.

Maintenance release 3.7.1 contains fixes for the following defects and others:

Note: Bug fixes since the 3.7.1 release can be obtained by the following the Bugzilla query:

Bugs fixed in the 3.7.1 release

ID Summary
112443 [1.7][quick assist] allow converting a conditional into if-else even if there is an error
242159 [1.7][compiler] type inference with unbounded wildcard in result type
272592 Issues with PNG images on Cocoa
281912 printing to non-default printer no longer works properly
288548 Add support for Java SE 7 features
300576 NPE Computing type hierarchy when compliance doesn't match libraries
317719 Method incorrectly flagged as having same erasure output when return type differs
326311 Bus error in org.eclipse.swt.internal.cocoa.OS.object_getInstanceVariable (called from Tree.expandItem)
334306 [1.7][compiler] name clash reported in javac 1.7 and not in javac 1.6
334313 [1.5][compiler] Bug in the way eclipse handles overriding of generic abstract method by a non-abstract method
336322 [1.7][search]CCE while searching for a type reference in multiple catch parameters
336782 [1.7][recovery]Extra error tokens with invalid unary operator
337738 [1.7][content assist]Test CompletionParserTest#testEA_1 fails
337795 [1.7][compiler] Missing unchecked warning at varargs method/ctor declaration site
337799 [1.7][compiler][varargs] Eclipse fails to report error on incorrect SafeVarargs usage
337802 [1.7][compiler] Usage of 0x0ffffffff is being reported as out of range.
338402 [1.7][compiler][enh] Open issues in try with resources implementation
338789 [1.7][assist] No proposal inside a multi catch statement after '|'
339478 [1.7][compiler] support for diamond case
339837 [1.7][compiler] Multicatch syntax not rejected at 1.6-
339864 [1.7] Add recovery in ASTConverter for all new constructs in JLS3 mode
340022 [1.7][compiler] Support for precise rethrow
340059 [1.7] IAE when dealing with Signature of disjunctive type
340365 [1.7] Problems in new APIs (TryStatementWithResources, DisjunctiveType)
340372 [1.7] NaiveASTFlattener needs to support the new AST nodes
340375 [1.7] Merge TryStatementWithResources into TryStatement
340445 [1.7] ASTRewriteAnalyzer and ASTRewriteFlattener need updates
340484 [1.7][compiler] Failure in computing precisely rethrown types.
340485 [1.7][compiler] Type miscalculation in rethrow
340486 [1.7][compiler] Missing error in multi catch scenario
340513 [1.7][compiler] Unicode 6.0 characters work at compiler compliance level 1.5 and 1.6
340626 [1.7][compiler] Inconsistent source pinpointing in multi-catch blocks
340634 [1.7][compiler][multicatch] Compiler accepts type variables as catch parameter type
340747 [1.7][compiler] compiler option to warn when diamond can be used, but type args are used instead.
341333 [1.7][compiler] DisjunctiveTypeReference#resolveType(..) does not set the value for DisjunctiveTypeReference$resolvedType
341462 [1.7][search][diamond] Search doesn't return the reference to a function when called with diamond constructor
341485 [1.7][navigate] "Open declared type" does not navigate to LUB for a multi-catch's argument
341795 [1.7][compiler] Cannot assign a generic method with multiple bounds return value to any variable
342416 [1.7] Signature#createIntersectionTypeSignature(..) should take array of signatures
343475 [1.7] Compiler warning for invalid type inside switch needs to be improved
343476 [1.7][assist] propose String variables and fields inside switch case.
343637 [1.7] Already used exception offered again in a Mulicatch block
343687 [1.7] IAE in NumberLiteral#setToken(String) for binary tokens and tokens with underscore
343693 [1.7] Adjust subclasses of AllocationExpression for <> support
343785 [1.7] Incorrect line numbers in stack trace with try with resources
344522 [1.7] Incorrect source range for ParameterizedType in case of Diamond
344655 [1.7][compiler] Prohibit use of <> with explicit type arguments to generic constructor
344696 [registry] IllegalArgumentException in DirectMap cause by multi-threaded access in ConfigurationElementMulti when -registryMultiLanguage is used
344824 [1.7][compiler] Incorrect error range for unreachable catch block error in multi-catch
344833 Enable 1.7 compiler compliance in JavaSE-1.7.profile
345020 [run control][debug view] Run control actions not updated upon state change when multiple elements selected in Debug view.
345239 [1.7][compiler] Compiler should issue better diagnostics for use of <> with anonymous classes
345359 [1.7][compiler] AIOOB on diamond construct with argument error
345411 Table.pack() makes column width too small by one pixel
345522 [1.7][compiler] Compilers fails to compute precisely rethrown types
345559 [1.7][compiler] Type inference for generic allocation can be avoided for invalid constructor
345579 [1.7][compiler] Weird error message in rethrow site
345628 [1.7] Rename disjunctive type to union type
345715 [implementation] AnnotationModel.fModificationStamp leaks annotations
345968 [1.7][compiler] NPE while using diamond for inner class allocation
345979 Helios crash on Linux!
346029 [1.7][compiler] Eclipse compiles code rejected by JDK7
346116 Java files open when inspecting the code, instead of Class file
346401 [import/export] p2 import/export does not persist previously selected Eclipse installation
346406 [import/export] p2 import/export: offer a search filter
346415 [1.7][assist] No proposal inside catch statement from 3rd catch block onwards
346454 [1.7][content assist]Getting NegativeArraySizeException while trying content assist after diamond
346518 weaving hook support creates an extra byte[] copy each class load when it is not necessary
346741 [1.7][doc] Update doc when java 1.7 support is done
347145 [1.7][compiler] Bounds check issue with raw types in method inference
347183 Deadlock reading/writing to log
347426 [1.7][compiler] ecj behavior differs from javac
347503 [DOM] ASTParser.setEnvironment() ignores includeRunningVMBootclasspath parameter
347600 [1.7][compiler] Suspect bounds check failure after inference.
347746 [1.7][compiler] Bounds check failure during method inference
347756 [10.7] Keyboard events are not received if Shell has SWT.RESIZE style
347786 [1.7][quick fix] Quick fixes for new warnings/errors corresponding to @SafeVarargs annotation
347792 [1.7][quick fix] Update "Convert 'switch' to 'if-else'" quick assist
348024 Empty AST for class with static inner class in a package with
348046 MAC Copy DBCS using HTMLTransfer will be shown as messy code.
348050 [1.7] Error in JDT Core during AST creation
348061 [1.7] [quick assist] Quick assists to convert multiple catch blocks to a single multi-catch block and vice versa
348164 text boxes in server overview for times are too small on Cocoa / Mac
348198 [1.7][typing] Broken indentation after enhanced for loop
348309 [10.7]Awkward Scroll Bars
348369 [1.7] Missing error "No exception of type Exception[] can be thrown"
348379 [1.7][compiler] Null pointer access warning for strings in switch
348406 [1.7] Incorrect error msg on try with resources in 1.5 mode
348455 [prefs] Preferences service fails CT (2/7)
348459 [1.7][quick fix] "Change compiler compliance" should change to Execution Environments
348491 [1.7] Rename IProblem.IllegalBinaryLiteral to BinaryLiteralNotBelow17 and IProblem.IllegalUsageOfUnderscore to UnderscoreInLiteralsNotBelow17
348492 [1.7] Improve error msg on strings in switch in 1.5 mode
348493 [1.7] Improve error msg for Diamond operator in 1.5 mode
348660 [ui] PreselectedIUInstallWizard does not present license info
348705 [1.7][compiler] Improve error message for unhandled IOException generated due to compiler-generated close()
348708 [1.7][quick fix] Adding unhandled exceptions on resource declarations performs wrong action
348860 [1.7][quick fix] Remove redundant caught type in multi-catch
348883 [1.7] Fix breakages caused by the new UnionType node
348930 [ltk][reorg] Deleting physically nested projects can cause exceptions (for 3.7.1)
348944 [1.7] Fix breakages caused by changes in TryStatement node
348956 [1.7] ITypeBinding#isAssignmentCompatible(ITypeBinding) returns different result
348981 [doc] Review javadoc of OperationsFactory
348982 [api] misuse of the generics in OperationsFactory
348986 [ui] CCE while selecting feature for uninstall
349008 [1.7] Ugly formatting for try with resources
349045 [1.7][extract local] Extract Local Variable must expand diamond type argument
349072 [1.7] "Cannot infer elided type(s)" sounds too elite
349192 SignatureBlockProcessor.readIntoArray(BundleEntry) does not close input stream
349224 [CommonNavigator] Navigator content provider "appearsBefore" creates hard reference to named id
349274 [content assist][1.7] content assist should work for diamond
349312 [1.7][compiler] improved problem messages
349314 [1.7][formatter] Line wrapping for multi-catch arguments
349335 [quick assist][1.7] Offer to replace <> with the inferred type
349336 [1.7][quick fix] Suggest to use <> where applicable
349354 Need to call gdk_cairo_reset_clip when resetting clipping
349396 [1.7][formatter] Line wrapping and indentation options for try with resources
349400 [1.7] Add Java 7 support to Debug
349405 [1.7][introduce indirection] Introduce indirection throws IAE
349447 [1.7] Add Java 7 support for API Tools
349457 InternalTreeModelViewer.handleTreeExpand() prints "dude" to System.out
349460 Git Migration: need proof that we can build 3.7.1 against Git
349486 [1.7] codeSelect doesn't work on @PolymorphicSignature methods
349487 [1.7] IMethodBinding#getJavaElement() returns inexistent element for @PolymorphicSignature methods
349488 [1.7] IMethodBinding#getMethodDeclaration() should return the declaration of @PolymorphicSignature methods
349645 [1.7][typing] Update the indenter for try with resources
349665 [1.7][quick fix] Need 'Surround with try/multi-catch'
349683 [1.7] Search for references to @PolymorphicSignature methods doesn't work
349700 [Help] Extra mnemonic in properties file
349706 PreferencesTests rely on test ordering
349772 Package version incorrect in supplement bundle
349798 [1.7][preferences][formatting] Line wrapping and indentation options for try with resources and multi-catch arguments
349837 Incompatibility between WebKit and XULRunner's sqlite
349851 [Doc] Document -displayHelpWindow parameter to standalone help
349862 [1.7] NPE when trying to use UnionType as TryStatement resource
349864 [1.7][compiler] Error message considers AutoCloseable as class
349933 [clipboard] Open from Clipboard throws StringIndexOutOfBoundsException for incomplete stacktrace
350003 [1.7] [compiler] AnnotationPolymorphicSignature tag is not being set to invokeExact while compiling MethodHandle source file
350039 [1.7] ASTParser#createASTs(..) doesn't resolve IMethodBinding for @PolymorphicSignature method reference
350087 [1.7] JavaElementLabelComposer has problems rendering references to @PolymorphicSignature methods
350095 The 2000th (0-based) enum constant is null
350311 [1.7][quick assist] Extract multi-catch type to separate catch clause
350312 Embedded SWT in Swing (in SWT) breaks between 3.6.x and 3.7
350325 [1.7] String switch statements break conditional breakpoints
350361 [1.7] Unhandled exception type Exception
350375 [change method signature] NPE while renaming a method
350380 [shared] Java package can't install because of dependency on m2e
350496 [1.7] @PolymorphicSignature IMethods are missing the annotation
350579 [1.7][compiler] VerifyError running example from bug 338402 comment 5
350611 [1.7] Inconsistent error msg and error location for illegal diamond
350614 [generalize type][1.7] NPE
350652 [1.7][assist] Completion issues with multicatch (FUP of 343637)
350697 [1.7] Bad usages of JavaModelUtil#set50ComplianceOptions(..)
350713 [1.7][quick fix] Provide 'Add exception to existing catch clause' quick fix
350716 [1.7] Diamond and conditional don't mix well (need to add explicit arguments)
350767 [1.7][assist] CCE while invoking assist on a multi-catch block
350885 [Search] The pull up refactoring throws an NPE when pulling up a member that already exists in the superclass
350895 [1.7][formatter] New option to wrap before/after '|' in multi-catch
350897 [1.7][api] ClassInstanceCreation#isResolvedTypeInferredFromExpectedType()
350935 [ds] java.lang.NullPointerException at org.eclipse.equinox.internal.ds.impl.ReadOnlyDictionary.get(
351048 [1.7][hovering] Show inferred type for Diamond types
351081 [1.7][preferences][formatter] New option to wrap before/after '|' in multi-catch
351083 cannot install by reference WTP project to a osgi based web container.
351165 [1.7] API to get the type arguments of the declaring type for constructor invocations
351170 [1.7] ASTRewrite issues in Try with resources
351212 Workspace failed to start due to Problems View getting activated outside SWT Display Thread
351231 [prefs] EclipsePreferences#flush method should be synchronized
351262 [1.7][quick fix] Change compiler compliance when diamond operator is used in 1.6 or lower
351272 [Help][Index] Keyword Index: Blank line after parent nodes that link a help page
351349 [type hierarchy] NullPointerException after closing type hierarchy view after a cancel
351426 [1.7][code assist] CompletionContext.getExpectedTypesKeys() returns wrong type
351438 performance problems with ExportedPackageImpl constructor
351441 [1.7] Exception occurrences are not marked correctly when an exception in throws declaration is selected.
351444 [1.7][content assist] Need to know whether I can use diamond
351464 [1.7][quick fix] Don't propose "Add multi-catch clause to surrounding try" if only one exception
351498 [model]java.util.ConcurrentModificationException upon startup
351653 [1.7][compiler]: VerifyError in try statement with finally and return statements
351752 Attempting to import a malformed EJB jar with Archive File wizard causes StackOverflowError
351843 [registry] Translations for Java Content Type labels not loaded in a fresh install
351853 [quick fix] 'Change type to List<String>' is offered on constructor invocation.
351934 [1.7][preferences] compiler option to warn when diamond can be used, but type args are used instead.
351965 [1.7] CCE when using diamond in 1.4
352014 \u1369 no longer accepted as a valid java identifier part
352054 [1.7] Update New and Noteworthy
352055 Wrong test failure in M20110713-0800 due to wrong version of test plug-in
352077 [Help] Trying to open Workbench Help shows an "XPCOM Error" dialog
352089 [repository] Synchronization problem in mirror selection
352145 [1.7][compiler] VerifyError with aload0 being involved into ConditionalExpression
352291 TextLayout ignores TextStyle rise if GC's antialias is different from SWT.DEFAULT
352402 [1.7][quick fix] Quick fix to change the compliance to 1.7 doesn't trigger a build
352413 [1.7] Debugger should support binary literals and underscores while setting literals
352433 [backport] CompareUIPlugin.findContentViewerDescriptor returns null even if a viewer is registered via extension point=""
352434 [Help][Search] "Nothing found" if more than 1000 matches
352445 [1.7][extract method][extract constant][extract local] Extract local variable should not be available inside the resource specification of try-with-resources
352447 [generalize type][1.7] AssertionFailedException on using "Generalize declared type"
352448 [inline][1.7] Inline should not be available for variables used in the resource specification of try-with-resources
352461 [1.7][preferences][formatter] option to wrap before/after '|' in multi-catch should be disabled if "Do not Wrap" is selected
352464 [1.7] Incorrect Javadoc shown for reference of invokeExact (missing PolymorphicSignature annotation)
352465 [1.7] Surround with try/multi-catch uses different variable names
352467 [1.7][formatter][preferences] Rename line wrapping preferences for "try" and "catch"
352484 [pkgAdmin] refreshPackages incorrectly spans regions
352496 tests using wrong version of JCL
352502 [breakpoints] Toggle breakpoints type logic can select an invalid breakpoint type.
352553 [1.7] 'char a\u200b' is being accepted in 1.6 mode
352665 [1.6][compiler] Internal compiler Error: ArrayIndexOutOfBoundsException when compiling certain classes with outer access error
352694 GC can not capture screen correctly in MAC 10.7 lion
352699 [1.7][compiler] Improve error range for redundant type parameter warning
352732 Adding the same log listener causes the log filters to get out of sync
352784 Null pointer exception when press F2 on an expression in expression view without columns
352804 [target] NPE in LoadTargetDefinitionJob#handleReload
352806 [target] Target Platform Resolution Fails with unsatisfied dependencies in Indigo but works in Helios SR2
352990 [10.7] [rulers] The right vertical ruler is missing after Mac OS X Lion installation...
353085 [1.7] Cannot cast from Object to boolean
353089 [1.7][compiler] Incorrect name clash error with ecj
353093 IMethod#getAnnotations() doesn't return @SafeVarargs of java.util.Arrays#asList(T...)
353099 [1.7][introduce indirection] should not be available for polymorphic signature method
353103 ConcurrentModificationException during resolver fragment processing
353137 [1.7] Make sure TagBits.AnnotationSafeVarargs and AnnotationPolymorphicSignature are handled everywhere
353238 [1.7] update unusedTypeArgs option description for the batch compiler
353243 [1.7] Remove BETA_JAVA7 blurbs and move to 3.7.1
353251 [1.7] merging Java 7 work to R3_7_maintenance branch
353503 [10.7][hovering][navigation] wrong size of pop-up dialog for multi-hyperlink
353523 SWT_AWT broken on Mac OS X Leopard (10.5.8)
353535 Eclipse compiler generates wrong bytecode for nested try-with-resources statements
353553 Rename to avoid translation
353640 AIOOBE in ParameterizedTypeBinding.substitute
353814 ExternalModelManager#extractJar - prove for NPE
353815 NPE in P2TargetUtils.getAgent()
353821 Test failures in latest I-builds
353880 Numerous outdated bundledata/configuration files created in equinox stack
354052 [1.7] NPE in org.eclipse.jdt.internal.compiler.ClassFile.traverse(
354124 [1.7] Porting guide entry for Java 7 changes in 3.7.1
354241 [relengtool] 'Fix Copyrights' action doesn't appear on projects using subclipse anymore
354323 Performance results are not getting stored in the DB
354428 [Help] Standalone Help doesn't support enablement expressions with contributed property testers
354511 add text to clickthroughs regarding java 7 bug to 3.7.1 and 3.8 builds
354536 compiling still depends on the order of compilation units
354549 [patch] Optional runtime dependencies in pde.runtime should be non-greedy
354557 [Regression] ExternalLibraryCache causes false classpath problem markers.
354579 Fup of bug 289247: Investigate validity of the fix vis-a-vis JLS.
354630 Test failures in R37x builds
354647 org.eclipse.equinox.p2.user.ui feature has lower version in Indigo SR1 than in Indigo
354710 Install/import from existing installation fails to produce expected choices when 3.6 is the source
354895 Setting Target Platform doesn't update ECLIPSE_HOME until workbench is restarted
355041 [Help][Context] NPE when pressing F1 in wizard without title
355090 Missing version check when using OS.sel_flashScrollers
355152 Performance improvement for UsageTest suite
355400 is not threadsafe
355522 main Eclipse update site is named "Eclipse Project Test Site"
355613 Default target is selected when invalid targets are passed
356002 VerifyError "Inconsistent stackmap frames" for switch-string statement with nested for-loop
356993 equinox/p2 feature versions in 3.7.x stream should be incremented
251 bugs found.

Sun, Solaris, Java and all Java-based trademarks are trademarks of Oracle Corporation. in the United States, other countries, or both.

IBM is a trademark of International Business Machines Corporation in the United States, other countries, or both.

Microsoft, Windows, Windows NT, Vista, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.

Apple and Mac OS are trademarks of Apple Computer, Inc., registered in the U.S. and other countries.

QNX, Neutrino, and Photon are trademarks or registered trademarks of QNX Software Systems Ltd.

Other company, product, and service names may be trademarks or service marks of others.

(c) Copyright IBM Corp. and others 2009, 2011

Appendix 1: Execution Environment by Bundle

In the table below, the "3.7 minimum execution environment" column indicates the minimum Java class library requirements of each bundle for the 3.7 release, where the value is one of:

Entry Meaning
J2ME Foundation 1.0 - indicates that the bundle can only be run on Foundation 1.0 or greater. Note that with the exception of some MicroEdition IO classes, Foundation 1.0 is a subset of J2SE 1.3.
J2ME Foundation 1.1 - indicates that the bundle can only be run on Foundation 1.1 or greater. Note that with the exception of some MicroEdition IO classes, Foundation 1.1 is a subset of J2SE 1.4.
J2SE 1.3 - indicates that the bundle can only be run on JSE 1.3 or greater.
J2SE 1.4 - indicates that the bundle can only be run on JSE 1.4 or greater.
Java SE 5 - indicates that the bundle can only be run on Java SE 5 or greater.
Java SE 6 - indicates that the bundle can only be run on Java SE 6 or greater.
n/a Unknown at the time of this revision.

Table of minimum execution environments by bundle. (See also the Equinox Project plan for the execution environment requirements of bundles contributed via that project.)


not specified
not specified
not specified
not specified
not specified
not specified
not specified
not specified
not specified
not specified