playframework icon indicating copy to clipboard operation
playframework copied to clipboard

Not able to Run->Debug in Intellij Idea 2022.1, it shut's down immediately with exit code 2

Open EirikFinvold opened this issue 2 years ago • 15 comments

I face what seems like a similar issue as #11086 with 2.8.15 and the latest IntelliJ Idea (IntelliJ IDEA 2022.1 (Ultimate Edition) Build #IU-221.5080.210, built on April 12, 2022). Just like with the problem above it works fine running sbt run but not Idea->Run->Debug. It works perfectly well on linux, but not on two different Windows computers.

Reproduce:

  • Create a brand new project with sbt new playframework/play-java-seed.g8
  • Open with Idea
  • Use run->debug->sbt task with "Use sbt shell" disabled
  • IntelliJ is configured with Oracle OpenJDK 11.0.14, SBT Shell use for both "project reloads" and "build". "Use Play 2 compiler for this project" is disabled (tried both).

When starting the debugger it builds just fine, but when it after building opens the debugger console it exits immediately:

Connected to the target VM, address: '127.0.0.1:52457', transport: 'socket' Disconnected from the target VM, address: '127.0.0.1:52457', transport: 'socket' Process finished with exit code 2

Closing Idea and running call sbt run > test.log 2>&1 works, but maybe the first error is the problem? Output from test.log:

A subdirectory or file [info] welcome to sbt 1.6.2 (Oracle Corporation Java 11.0.14) already exists. [info] welcome to sbt 1.6.2 (Oracle Corporation Java 11.0.14) [info] loading settings for project global-plugins from idea.sbt ... [info] loading global plugins from C:\Users\Eirik.sbt\1.0\plugins [info] loading settings for project microlog-learn-play-build from plugins.sbt ... [info] loading project definition from C:\Users\Eirik\microlog-learn-play\project [info] loading settings for project root from build.sbt ... [info] set current project to microlog-learn-play (in build file:/C:/Users/Eirik/microlog-learn-play/) [error] Expected 'error' [error] --export-rt [error] ^ [info] welcome to sbt 1.6.2 (Oracle Corporation Java 11.0.14) [info] loading settings for project global-plugins from idea.sbt ... [info] loading global plugins from C:\Users\Eirik.sbt\1.0\plugins [info] loading settings for project microlog-learn-play-build from plugins.sbt ... [info] loading project definition from C:\Users\Eirik\microlog-learn-play\project [info] loading settings for project root from build.sbt ... [info] set current project to microlog-learn-play (in build file:/C:/Users/Eirik/microlog-learn-play/)

--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Enter to stop and go back to the console...)

I tried SBT versions from 1.4.0->1.6.2 and also downgrading Play back to 2.8.8.

-->

Play Version

2.8.8 -> 2.8.14

API

Java 11.0.14

Operating System

Windows 10

EirikFinvold avatar Apr 29 '22 21:04 EirikFinvold

Just wanted to let you know that we have the same issue, maybe more information helps us track down the issue. In our case, a full reboot of Windows temporarily solves the issue -- it is reappearing though, and an IntelliJ restart does not help. Really strange...

In our case run from the sbt shell starts the application without any issues.

However, using the run configuration from IntelliJ fails (both for "Run" and "Debug"). It only prints the exit code, there is no further information.

What's also strange: This is only a problem on my colleague's machine, everythings works alright for me.

Play Version

2.8.8; 2.8.15

SBT version

1.5.5; 1.6.2

Java Version

11.0.13 (Eclipse Adoptium Temurin)

Operating System

Windows 10

IntelliJ versions

2021.3; 2022.1

aumann avatar May 04 '22 10:05 aumann

My guess is that this was introduced in latest IntelliJ 2022.1, maybe open a bug there? See https://youtrack.jetbrains.com/issues?q=Subsystem:%20%7BPlay%20Framework%7D

mkurz avatar May 04 '22 10:05 mkurz

Can you confirm this is working with 2021.3?

mkurz avatar May 04 '22 10:05 mkurz

We will check and report back, thanks for the quick reply. We had the issue in 2021.3 but that was probably still with Play 2.8.8 and is thus fixed with #11086

aumann avatar May 04 '22 10:05 aumann

Yeah, it's easy to get confused, so please make sure to alway test with latest 2.8.15, thanks!

mkurz avatar May 04 '22 10:05 mkurz

The issue is also present in IntelliJ 2021.3 (Build #IU-213.5744.223, built on November 27, 2021), using the current plugin version 2.8.15

We've also tested in 2021.3.3 (Build #IU-213.7172.25, built on March 15, 2022)

The output of the run (for 2021.3) was:

"D:\Programme\Eclipse Adoptium\jdk-11.0.13.8-hotspot\bin\java.exe" -Dfile.encoding=UTF8 -Djline.terminal=none -Dsbt.global.base=C:\Users\kim\AppData\Local\Temp\sbt-global-plugin9stub -Dsbt.log.noformat=true -Xms512M -Xmx1024M -Xss1M -Dconfig.file=conf/application.dev.conf -classpath C:\Users\kim\AppData\Roaming\JetBrains\IntelliJIdea2021.3\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run

Process finished with exit code 2

Workaround - sbt shell is related

However, it seems that this is related to an sbt-shell running (in the sbt-shell tool window). We've just been able to reproduce this on a second machine: whenever the sbt shell is running, the app run fails with exit code 2. As soon as the sbt shell is stopped, the play application starts again.

Interesting enough, this is independent of the "use sbt for project reload/builds" settings.

=> We have a workaround - both in 2021.3.3 and 2022.1 it works when first closing the sbt shell window.

aumann avatar May 05 '22 10:05 aumann

I have the same issue. I got it today when had to docker:publish Also, I did not find sbt shell window, which I used to run SBT without certain command, it disappeared unexpectedly Tasks in sbt window also do not work Now, to start sbt shell I should open terminal and run the command which prints Process finished with exit code 2

PromanSEW avatar May 05 '22 10:05 PromanSEW

I need to get my hands on a windows machine to test this. However, it might make sense to open a bug report in the JetBrain issue tracker (youtrack)?

mkurz avatar May 05 '22 10:05 mkurz

One more note: it seems that whenever the sbt shell is open in IntellIiJ, even starting another sbt from powershell or git bash is not possible. Running > sbt itself immediately terminates, too.

aumann avatar May 09 '22 12:05 aumann

I have reported it to JetBrains as well: https://youtrack.jetbrains.com/issue/IDEA-293783/Not-able-to-Run-Debug-in-Intellij-Idea-2022-1-on-Windows-it-shut

EirikFinvold avatar May 10 '22 11:05 EirikFinvold

Moved issue to Scala: https://youtrack.jetbrains.com/issue/SCL-20206/Not-able-to-Run-Debug-in-Intellij-Idea-2022-1-on-Windows-it-shut

PromanSEW avatar May 10 '22 15:05 PromanSEW

FYI, a workaround to this issue is to run the application as a "Play2 App" instead of SBT Task, and add this to JVM params: -Dsbt.server.forcestart=true

EirikFinvold avatar Jun 23 '22 11:06 EirikFinvold

Another workaround that seems to work for my team is using ~run instead of run in the Intellij run configuration.

aelfric avatar Sep 19 '22 11:09 aelfric

Is this still a problem in IntelliJ IDEA 2023.3 on Windows?

mkurz avatar Mar 12 '24 22:03 mkurz

I only did a very quick check - this may well be a different issue (Windows?). However, I still can't launch the play app while the sbt shell is active. I get the following error:

sbt.internal.ServerAlreadyBootingException: java.io.IOException: Could not create lock for \\.\pipe\sbt-load7156255216700723040_lock, error 5
	at sbt.internal.BootServerSocket.newSocket(BootServerSocket.java:357)
	at sbt.internal.BootServerSocket.<init>(BootServerSocket.java:296)
	at sbt.xMain$.getSocketOrExit(Main.scala:152)
	at sbt.xMain$.bootServerSocket$lzycompute$1(Main.scala:78)
	at sbt.xMain$.bootServerSocket$1(Main.scala:78)
	at sbt.xMain$.withStreams$1(Main.scala:86)
	at sbt.xMain$.run(Main.scala:123)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at sbt.internal.XMainConfiguration.run(XMainConfiguration.java:59)
	at sbt.xMain.run(Main.scala:47)
	at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
	at xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
	at xsbt.boot.Launch$.run(Launch.scala:149)
	at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
	at xsbt.boot.Launch$.launch(Launch.scala:159)
	at xsbt.boot.Launch$.apply(Launch.scala:44)
	at xsbt.boot.Launch$.apply(Launch.scala:21)
	at xsbt.boot.Boot$.runImpl(Boot.scala:78)
	at xsbt.boot.Boot$.run(Boot.scala:73)
	at xsbt.boot.Boot$.main(Boot.scala:21)
	at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.io.IOException: Could not create lock for \\.\pipe\sbt-load7156255216700723040_lock, error 5
	at org.scalasbt.ipcsocket.Win32NamedPipeServerSocket.<init>(Win32NamedPipeServerSocket.java:129)
	at org.scalasbt.ipcsocket.Win32NamedPipeServerSocket.<init>(Win32NamedPipeServerSocket.java:48)
	at sbt.internal.BootServerSocket.newSocket(BootServerSocket.java:351)
	... 23 more

It works if I close the sbt shell first.

aumann avatar Mar 13 '24 13:03 aumann