IntelliJ IDEA 2017.2 EAP: Run Dashboard for Spring Boot

Last week we’ve published a new IntelliJ IDEA 2017.2 EAP build, which, among various bugfixes and improvements, brings a new experimental feature, we think you may find very interesting. Because it’s still work in progress, you need to explicitly enable it via VM property -Dide.run.dashboard=true, or through the Registry.

After that, you will find that the traditional Run tool window for Spring Boot applications was replaced with the new Run Dashboard (in the future we plan that replacement for other app types, too.)

This new dashboard lets you explore and manage multiple Run configurations at once, with the list of Run configurations and their status on the left, and details and application-specific information on the right. Also, you get the tool bar that is handy to issue commands like run, stop, or restart.

For example, Spring Boot applications display the recently introduced Endpoints tab:

Screen Shot 2017-05-15 at 12.36.65

If you prefer so, the new tool window can look exactly like the Run tool window. Just click the Show Configurations button on the left toolbar, and then use the tabs on top to switch between running applications:

Screen Shot 2017-05-15 at 12.36.66

We’re very excited about this new feature and believe that it can be applied not only to Spring Boot, but to many other types of applications (and maybe not only applications). This is why we’d like to ask you for your feedback. Please give this new feature a try and share with us both your impressions and improvement suggestions. We hope your feedback will help us better understand the possible usage scenarios and put them in IntelliJ IDEA 2017.2.

About Andrey Cheptsov

Part-time dreamer. JVM/JavaScript geek. IntelliJIDEA Marketing Manager at JetBrains.
This entry was posted in EAP Releases, New Features and tagged , , , . Bookmark the permalink.

28 Responses to IntelliJ IDEA 2017.2 EAP: Run Dashboard for Spring Boot

  1. Andreas Falk says:

    This is a great feature I was waiting for since a long time. Eclipse based spring tool suite does already provide such spring boot dashboard for more than a year now Great to have thos now in IntelliJ as well.

  2. Georgios Andrianakis says:

    This looks like a great feature, I wasn’t able to try it however…

    I added the -Dide.run.dashboard VM property but nothing changed.
    I should also add that my OS is Ubuntu 16.04

  3. Hylton Peimer says:

    Thank you!
    I’ve been dreaming of the functionality for a long time.
    Huge!!!!

  4. Jens Voss says:

    Sounds great, but could you please give a few more details on how this is supposed to be enabled? I tried adding “-Dide.run.dashboard=true” to my idea.exe.vmotions file (I’m running build #IU-172.2103.15 on Windows 7), but the Run Dashboard tool window is nowhere to be found :(

    • Jens Voss says:

      Oops, I just saw that the bin directory not only contains an idea.exe.vmoptions, but also an idea64.exe.vmoptions file. Now everything works as it should.

  5. Joakim says:

    This looks great!

    Do you have any plans for a feature similar to the “Update classes and resources”-action available when running an application server? Or adding the src/main/resources path to the runtime classpath similar to how the spring-boot maven plugin does? When running with the spring-boot maven plugin, my resource edits are pretty much live as soon as I switch to my browser, but I would prefer to run my application without going through maven.

    Also, I would love to be able to associate for example an npm-command (TypeScript file watcher) to start any time I start my application!

  6. hegfirose says:

    @Andrey Cheptsov

    Could you tell me which screenshot software do you use. Thanks.

  7. Alex says:

    Great!
    Would be nice to have F4 action navigating to main Boot config class.
    As well Mappings endpoint with possibility to open in browser would help.

    Small regression alt-f4 shortcut stopped working.

    Thanks!

  8. Very nice feature, I’m looking forward to using it! :)
    Will it be available for Community edition as well?

  9. Sigal says:

    This looks very promising, but if I could launch a boot application with JRebel from the dashboard it would be even nicer

  10. Christopher says:

    For me its not working, if i run my application i get an Unknown error. From the logs:

    2017-05-22 20:51:51,628 [ 107480] INFO – lij.compiler.impl.CompilerUtil – COMPILATION FINISHED (BUILD PROCESS); Errors: 0; warnings: 0 took 11133 ms: 0 min 11sec
    2017-05-22 20:51:52,336 [ 108188] WARN – xecution.runners.ExecutionUtil – Execution error without description
    java.lang.NullPointerException
    at com.intellij.execution.dashboard.RunDashboardManagerImpl.a(RunDashboardManagerImpl.java:284)
    at com.intellij.execution.dashboard.RunDashboardManagerImpl.access$200(RunDashboardManagerImpl.java:59)
    at com.intellij.execution.dashboard.RunDashboardManagerImpl$5.selectionChanged(RunDashboardManagerImpl.java:141)
    at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:99)
    at com.intellij.util.EventDispatcher.access$200(EventDispatcher.java:35)
    at com.intellij.util.EventDispatcher$2.invoke(EventDispatcher.java:79)
    at com.sun.proxy.$Proxy92.selectionChanged(Unknown Source)
    at com.intellij.ui.content.impl.ContentManagerImpl.a(ContentManagerImpl.java:580)
    at com.intellij.ui.content.impl.ContentManagerImpl.addSelectedContent(ContentManagerImpl.java:393)
    at com.intellij.ui.content.impl.ContentManagerImpl$1.run(ContentManagerImpl.java:484)
    at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContent(ContentManagerImpl.java:502)
    at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContentCB(ContentManagerImpl.java:451)
    at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContentCB(ContentManagerImpl.java:440)
    at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContentCB(ContentManagerImpl.java:521)
    at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContent(ContentManagerImpl.java:526)
    at com.intellij.ui.content.impl.ContentManagerImpl.c(ContentManagerImpl.java:175)
    at com.intellij.ui.content.impl.ContentManagerImpl.addContent(ContentManagerImpl.java:152)
    at com.intellij.execution.ui.RunContentManagerImpl.a(RunContentManagerImpl.java:347)
    at com.intellij.execution.ui.RunContentManagerImpl.showRunContent(RunContentManagerImpl.java:396)
    at com.intellij.execution.impl.ExecutionManagerKtImpl$startRunProfile$startRunnable$1$2$1.run(ExecutionManagerKtImpl.kt:86)
    at com.intellij.ui.AppUIUtil.invokeLaterIfProjectAlive(AppUIUtil.java:97)
    at com.intellij.execution.impl.ExecutionManagerKtImpl$startRunProfile$startRunnable$1$2.consume(ExecutionManagerKtImpl.kt:77)
    at com.intellij.execution.impl.ExecutionManagerKtImpl$startRunProfile$startRunnable$1$2.consume(ExecutionManagerKtImpl.kt:40)
    at org.jetbrains.concurrency.DonePromise.done(DonePromise.java:40)
    at com.intellij.execution.impl.ExecutionManagerKtImpl$startRunProfile$startRunnable$1.run(ExecutionManagerKtImpl.kt:76)
    at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:86)
    at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:72)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.a(LaterInvocator.java:416)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
    at com.intellij.ide.IdeEventQueue.h(IdeEventQueue.java:821)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:649)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  11. Artur says:

    Is it working when using Kotlin as a language?

    • Andrey Cheptsov says:

      Yes, should work.

      • Andrew says:

        Thanks for the article on https://habrahabr.ru/company/JetBrains/blog/333648/ due to which I knew about this feature.

        I have a Spring Boot project on Kotlin, and this feature does not work for some reason: there appears no “Run Dashboard”, just standard “Run”.

        I’ve updated VM options through Help > Edit Custom VM Options, so now they are as follows:

        # custom IntelliJ IDEA VM options

        -Xms128m
        -Xmx750m
        -XX:ReservedCodeCacheSize=240m
        -XX:+UseConcMarkSweepGC
        -XX:SoftRefLRUPolicyMSPerMB=50
        -ea
        -Dsun.io.useCanonCaches=false
        -Djava.net.preferIPv4Stack=true
        -XX:+HeapDumpOnOutOfMemoryError
        -XX:-OmitStackTraceInFastThrow
        -Dide.run.dashboard=true

        Below, please find some other data of my environment:

        IntelliJ IDEA 2017.2 data: Build #IC-172.3317.76, built on July 15, 2017
        JRE: 1.8.0_152-release-915-b5 amd64
        JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
        Windows 10 10.0

        Spring Boot v2.0.0.M2

        Kotlin: 1.1.2-5

        • Andrey Cheptsov says:

          Due to some technical issues, this feature still requires the VM options. We going to enable the feature by default in the nearest update. Sorry about that.

  12. Chris Roberts says:

    Looks great! In the last screenshot (where it works like the existing Run tool window), it would be nice if you could have tabs across the top for all the configurations at once (or maybe the just the running ones), so to the right of “Run Dashboard,” you would have multiple tabs (one for each configuration). I think that’s the way Data Grip does multiple result sets now in the latest version, and it seems more convenient that just having one at a time there.

  13. fzhyzamt says:

    Testing of a method cannot start. Adding port numbers to the juint’s vmoption option can start normal, and testing a class is normal as well

  14. Thomas says:

    Can anyone tell me how to add the argument in OS X?

    • Andrey Cheptsov says:

      Sorry, not sure I understand the question. Do you mean how to add a VM option? Then it is Help | Edit custom VM options.

  15. eagoo says:

    why report:

    Failed to retrieve ‘health’ endpoint data:
    error unmarshalling return; nested exception is:
    java.lang.ClassNotFoundException: scala.collection.immutable.Map$Map2 (no security manager: RMI class loader disabled)

    • Konstantin Aleev says:

      Maybe there are some problems with one of the health indicators.
      In order to receive more details message, please, add ‘management.security.enabled=false’ to application.properties file, restart application and check Health endpoint over HTTP. It should be exposed as ‘/health’.

      We will provider more details error messages in the next release.

  16. liuji says:

    how can I set Open whit Browser On I want kind of Browser,not system default

  17. vasanth mahendran says:

    Hi,
    I have added the VM argument -Dide.run.dashboard=true but still I can’t see the run dashboard for Spring boot Applications.

    I am using IntelliJ IDEA Ultimate 2017 2.3 in Windows

    Thanks

    • Konstantin Aleev says:

      Hello! There is no need to explicitly enable Run Dashboard via VM property since 2017.2.1. However Spring Boot run configurations are not shown in Run Dashboard by default. In order to work with Spring Boot run configuration in Run Dashboard one need to enable ‘Show in Run Dashboard’ checkbox in Edit Run/Debug Configurations dialog. As soon as there are more than one Spring Boot run configuration in a project, Intellij IDEA would offer to show them in Run Dashboard.

Leave a Reply

Your email address will not be published. Required fields are marked *