Spring Tool Suite 3.9.0: New and Noteworthy

General introduction video to the Spring Tool Suite

Josh Long published a nice Spring Tips video, introducing the Spring Tool Suite.


This video doesn't feature all the latest enhancements and changes from this 3.9.0 release, but provides a great introduction to the Spring Tool Suite in general.

Updates and New/Enhanced Features

Eclipse Oxygen (4.7)

The default STS distribution is now based on the recently released Eclipse Oxygen (4.7) release. Highlights from the Oxygen release can be found here.

Pivotal tc Server updated to 3.2.6

The latest Pivotal tc Server release 3.2.6 is now included in the STS distribution bundle.

Early Access Java9 support available

The JDT team at Eclipse provides an early access version of Java9 support from the Eclipse Marketplace. Details can be found here: Early Access Java9 support for Eclipse Oxygen.

Take care when having JDK9 installed

Having an early access build of JDK9 installed on your machine might cause the launcher to pick that as the JDK to run STS on - and this might fail with an error message after choosing your workspace. In that case make sure to define the latest JDK8 runtime as the VM to run your IDE on: Here is how to modify your sts.ini file for that.

New option to improve Spring Boot app startup speed

Launching a Spring Boot app now allows you to easily switch on specific JVM flags that lets a boot app startup even faster. You can switch that flag on for each individual launch config:


In case you would like to modify those JVM options, you can take a look and change them in the preferences:


Updates to the Cloud Foundry Manifest editing support

The editing support for Cloud Foundry manifest files got updated to the latest specs, including support for:

The editor now also supports content-assist of dynamically retrieved values for additional properties, including:

This includes content-assist for domains inside of routes:

The content-assist retrieves values for those properties dynamically from connected Cloud Foundry targets from within the boot dashboard + the command-line interface for Cloud Foundry (in case you use that on your machine). All those Cloud Foundry targets are used only in case you are connected to them (in the boot dashboard case) or logged in (in the cf cli case).

There are also additional validations in place that warn you if you use properties that shouldn't be used together in the same manifest file:


Under the hood

The underlying mechanics of the Cloud Foundry manifest editing support have changed in this release. Most of the features are now realized as part of a so-called language server that runs as a separate process. So don't be surprised to see another processes running on your machine whenever you have a CF manifest file open to edit.

In case you updated an existing STS installation to this new version of the Spring Tool Suite, you didn't get the language server based support automatically. You would need to manually install the language server via "Install New Software", type in https://dist.springsource.com/release/TOOLS/sts4-language-servers/ and select the Cloud Foundry Manifest Editor Language Server feature. After the installation you can restart STS and will get all the new features when editing Cloud Foundry manifest files.

In case something goes wrong and you would like to switch this feature off, you can go to the About dialog, select the Installation Details and uninstall the feature "Cloud Foundry Manifest Editing Language Server".

Improvements to the Spring Cloud CLI integration

The Spring Cloud CLI extension is now automatically downloaded and installed into the default Spring Boot CLI, so you don't need to configure your Spring Boot CLI manually to use the Spring Cloud services in the boot dashboard. This happens automatically for you.

In case you use your own local Spring Boot CLI installation, STS allows you to easily add the Spring Cloud CLI extension to it from the preferences:


In addition to that, when using a recent Spring Boot and Cloud CLI version, you get the logs of those services streamed to directly to the console view, so you can see everything that happens with from within STS.

An additional improvement to the mechanics behind the scenes further reduces the number of JVM processes needed for each local Spring Cloud service that you start via the dashboard to one JVM process per started service.

@GetMapping, @PostMapping, etc, now directly supported

These specific request mapping annotations are now direclty supported:

They show up in the RequestMapping overview as well as the Spring Explorer view.


Important Notes

Issues now tracked on GitHub Issues

Issues around the Spring Tool Suite and the Spring IDE are tracked on GitHub from now on: https://github.com/spring-projects/spring-ide/issues.

Thanks for using the automatic error reporting

We would also like to thank our users for using the automated error reporting that we included since the 3.8.2 release and for sending us all those error reports. We used them to fix issues and improve reliability in this release. And we will continue to do that. So please keep those error reports coming!

In case you see a notification showing up that our error report quota exceeded, don't be surprised. With support from CodeTrails, we use a limited plan for this error reporting facility - and that might cause our quota to exceed from time to time. If you want to switch off those notifications, please go to the Preferences -> General -> Notifications.

macOS Sierra causes lost settings and lost add-on installs

If you unpackage the STS archive on macOS Sierra and use it without moving it to a different location on your drive, macOS Sierra Gatekeeper activates a security feature called "Path Randomization" for the app. This causes the STS.app bundle to be copied to a private and randomized read-only folder on your disc every time you start STS after a restart of your machine. As a result, all your third-party installs are lost as well as your global configuration. As a workaround, please move the STS.app bundle to a different location on your drive before starting it.

Manual Maven support going to be removed soon

We plan to remove the support for manual Maven projects from STS and Spring IDE in future versions of STS and Spring IDE. The manual maven support was used in the past when projects used Maven, but didn't opt-in to use the direct Maven support in Eclipse via the m2e project. While projects can still decide to not use m2e for their projects, the support for that via additional menu actions in STS will be gone.



Miscellaneous

Useful Links

Download STS: https://spring.io/tools/sts/all

Spring Tools Issue tracker: https://github.com/spring-projects/spring-ide/issues


Known issues in this release

Running on JDK9

Using a few options, it is possible to run and use the Spring Tool Suite on top of a JDK9. However, please notice that the Maven support in Eclipse/STS runs within the JVM of the IDE and therefore also uses the JDK9 runtime. While that isn't necessarily a problem, having Maven modules in your build that aren't compatible with Java9 might cause your project build to fail in Eclipse/STS.

This is the case, for example, if you use Spring Boot 1.5.x or earlier versions, which uses an older version of the Maven jar plugin, which fails when running on top of a Java9 VM. In that case we recommend to configure Eclipse/STS to run on top of a Java8 runtime (by modifying the eclipse.ini or sts.ini file accordingyly).


macOS Sierra might cause loss of settings and installed plugins

If you unpackage the STS archive on macOS Sierra and use it without moving it to a different location on your drive, macOS Sierra Gatekeeper activates a security feature called "Path Randomization" for the app. This causes the STS.app bundle to be copied to a private and randomized read-only folder on your disc every time you start STS after a restart of your machine. As a result, all your third-party installs are lost as well as your global configuration. As a workaround, please move the STS.app bundle to a different location on your drive before starting it.

The corresponding issue in the STS issue tracker: STS-4406: STS 3.8.2 and MacOS Sierra

The corresponding bug at Eclipse: Bug 507328 - Eclipse forgets about global settings and installed features


Spring Boot dashboard ngrok tunneling feature doesn't support Spring Cloud Services yet

The Spring Boot Dashboards ngrok tunnel feature doesn't work yet with remote service registries from Spring Cloud Services. Instead it works with self-deployed Eureka service registry apps on CF only (as described here). We are working on enhancing the ngrok tunnel feature to directly support Spring Cloud Services in the near future. In the meantime we published a tech note that describes how to setup ngrok tunneling in combination with SCS manually.


Silent loss of Functionality on Java 7 or earlier

STS 3.9.0 requires a JDK 8 to run on top of. If you are running it with an older JDK this may not be immediatlely apparant, but some of STS functionality will simply be 'absent' because the corresponding plugins are automatically disabled by OSGI because their requirements are not satisfied at runtime. See also below 'Setting the JDK'.


Setting the JDK

STS 3.9.0 requires a JDK 8 to run on top of. Nevertheless the native Eclipse launcher component might pick up a JRE or an older JDK automatically if you don't specify which JDK to run STS on top of. To avoid this, you can specify the JDK in the sts.ini file that comes with your STS installation. Add a line at the beginning "-vm" and an additional line below that which points to the "javaw" executable of the JDK on your machine. Here is a detailed explanation how to configure the JVM in the ini file.


Issues on Linux (GTK3)

Since Eclipse 4.5, Eclipse uses GTK3 is the default for the SWT widget library. In case you come across UI rendering glitches or related issues, you can try to avoid them by forcing SWT to switch back to using GTK2. Just set the environment variable "SWT_GTK3=0" before launching STS.


New and Noteworthy for previous releases

STS 3.8.4

STS 3.8.0 - 3.8.3

STS 3.7.3

STS 3.7.2

STS 3.7.1

STS 3.7.0